如何比较包含整数的列表A和列表B并打印缺少的整数?

时间:2018-07-31 09:18:02

标签: python list

我希望通过比较A和B列表来打印缺少的值。

例如,当我print(a)时,它会告诉我[1,2,5,7,8,9,11,12]丢失并且与A不同。

A = ['0', '0', '3', '4', '6', '6', '6', '6', '6', '6', '10', '10', '10']

B = ['1', '10', '2', '5', '0', '3', '4', '7', '8', '9', '6', '11', '12']

我试过了,但是行不通。

a = []
for x in A:
    for y in B:
        if y != u:
            a.append(y)

有一种简单的方法吗?我一直在尝试学习更多。希望有人可以提供帮助。

3 个答案:

答案 0 :(得分:5)

使用设置差异:

>>> A = ['0', '0', '3', '4', '6', '6', '6', '6', '6', '6', '10', '10', '10']
>>> B = ['1', '10', '2', '5', '0', '3', '4', '7', '8', '9', '6', '11', '12']
>>> set(B)-set(A)
{'5', '9', '7', '2', '12', '11', '8', '1'}

答案 1 :(得分:2)

您可以使用if语句:

for elt in B:
    if elt not in A:
        print(elt)

edit:可能不如上面的设置有效。但我将其保留在那里,以便您可以了解for循环中的“ not in”运算符;)

答案 2 :(得分:1)

反解决方案也有效-

from collections import Counter
C = Counter()
A = ['0', '0', '3', '4', '6', '6', '6', '6', '6', '6', '10', '10', '10']
B = ['1', '10', '2', '5', '0', '3', '4', '7', '8', '9', '6', '11', '12']
C.update(A)
C.update(B)
D = [k for k, v in C.iteritems() if v == 1]
# OP ['11', '12', '1', '2', '5', '7', '9', '8']