Python比较2个增加大小的列表的pythonic方法是什么?

时间:2011-07-06 05:06:59

标签: python list

我有一个列表(列表a),它根据大小增加,并从该列表中删除了项目,并放入另一个列表(列表b),维护已经检查过的内容。

维护(列表b)已完成的内容的列表需要与具有尚未检查的内容(列表a)的列表进行比较;在python中执行此检查的最有效方法是什么? 即使每个列表的内容可以超过10k项目。

while listA:
    for a in listA:
        #do something

        listB.append(url)
        listA.remove(url)

这是我能得到的最远的。

2 个答案:

答案 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

  

更新集合,删除元素   在别人身上找到。