我正在尝试查找列表A中的所有元素,而不是列表B.
我认为像newList = list(set(a) & !set(b))
或newList = list(set(a) & (not set(b)))
之类的东西会起作用,但事实并非如此。
如果有更好的方法来实现我想要做的事情而不是这个?
newList = []
for item in a:
if item not in b:
newList.append(item)
同样重要的是,它需要在Python 2.6中完成
答案 0 :(得分:15)
答案 1 :(得分:10)
你试过吗
list(set(a) - set(b))
以下是所有Python set operations。
的列表但这会不必要地为b
创建一个新集。正如@phihag所提到的,difference
方法会阻止这种情况。
答案 2 :(得分:1)
如果您关心维持秩序:
def list_difference(a, b):
# returns new list of items in a that are not in b
b = set(b)
return [x for x in a if x not in b]
答案 3 :(得分:1)
>>> list1 = [1,2,3,4,5]
>>> list2 = [4,5,6,7,8]
>>> print list(set(list1)-set(list2))
[1, 2, 3]