我有一个列表(设A),其中包含对象列表,每个对象都包含属性,例如name
和id
,id
值是存储在数据库中。在特定位置,我有 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/