我有一个列表(列表a),它根据大小增加,并从该列表中删除了项目,并放入另一个列表(列表b),维护已经检查过的内容。
维护(列表b)已完成的内容的列表需要与具有尚未检查的内容(列表a)的列表进行比较;在python中执行此检查的最有效方法是什么? 即使每个列表的内容可以超过10k项目。
while listA:
for a in listA:
#do something
listB.append(url)
listA.remove(url)
这是我能得到的最远的。
答案 0 :(得分:5)
您的代码会产生不一致的输出。您不应该在同一循环上下文中迭代和修改列表。
您可以将listA
用作Queue
:
while len(listA):
element = listA.pop()
#do something with element
listB.add(element)
这段代码是一致的,因为即使在while循环中修改列表也很困难,也没有为listA
创建迭代器。仅检查列表的len以确保程序终止。
答案 1 :(得分:0)
这取决于你真正需要什么。要比较两个列表中的唯一值,您可以尝试使用set data type:
a = xrange(11000)
b = xrange(0,11000,10)
diff = set(a).difference(set(b))
inter = set(a).intersection(set(b))
另外,您可以尝试查看difference_update:
更新集合,删除元素 在别人身上找到。