我有3个列表,我想找到第1 /第2和第2 /第3之间的差异 并打印出来。
这是我的代码:
n1 = [1,1,1,2,3]
n2 = [1,1,1,2] # Here the 3 is not found ("3" is not present in n1 at all)
n3 = [1,1,2] # here 1 is not found (there are fewer "1"s in n3 than in n2)
for x in n1:
if x not in n2:
print x
for m in n2:
if m not in n3:
print m
但我的输出只有3。
如何输出1和3?我也尝试使用set
,但它只打印了3
。
答案 0 :(得分:6)
由于您似乎关心在两个列表中找到商品的次数,因此您需要从与以下内容进行比较的列表中删除匹配的商品:
comp = n2[:] # make a copy
for x in n1:
if x not in comp:
print x
else:
comp.remove(x)
# output: 3
from collections import Counter
print Counter(n1) - Counter(n2)
# output: Counter({3: 1})
告诉您n1
中的哪些项目不在n2
中,或者n1
中的项目比n2
更频繁。
所以,例如:
>>> Counter([1,2,2,2,3]) - Counter([1,2])
Counter({2: 2, 3: 1})
答案 1 :(得分:-3)
您可以使用set来查找列表之间的区别。
print set(n1).difference(set(n2))