python - 在Python中以最小迭代从另一个列表中获取列表

标签 python python-2.7 iteration

我有一个列表(设A),其中包含对象列表,每个对象都包含属性,例如nameidid值是存储在数据库中。在特定位置,我有 ID 列表(设 B),现在我想要列表“A”中的那些对象,这些对象在列表“B”中具有 id。
通过使用简单的迭代,我可以从列表 A 中获取这些对象。(这可能会导致更多迭代) 我想减少迭代,因为我的两个列表都有超过 1000 个值

for clildB in B:
            for childA in A:
                #   MYCODE

最佳答案

要将 O(n*m)(二次)代码转换为 O(n+m)(线性):

ids = set(B)
L = [obj for obj in A if obj.id in ids]

item in a_set operation has O(1) (constant) time complexity (average case) ,其中 a_set 是一个集合。将其与时间复杂度为 O(n) 的 item in a_list 进行比较,其中 a_list 是一个列表。

关于python - 在Python中以最小迭代从另一个列表中获取列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17855769/

相关文章:

python - 从子类访问 python @property 的值

Python:如何检查路径是否是子路径

python - python中的正则表达式匹配

javascript - 在javascript中迭代数组+返回总和?

Python、PowerShell 还是其他?

python - 按钮的单按钮事件处理程序

python - "' int ' object is not iterable"在 while

iteration - 对每个满足的条件执行 block ,否则执行其他 block

python - 峰态,条形图的偏度? - Python

python - 如何创建具有格式化日期的稀疏列