如何验证每个列表是否包含公共号码?

时间:2016-01-07 01:05:08

标签: python arrays list numbers set

a = [1,2,3]
b = [0,1,0]
c = [5,1,5]

if set(a)&set(b)&set(c) is True:
    print("aa")
else:
    print('ss')

每个列表都包含数字1,因此我希望它打印aa,但即使我将ss更改为True,也会打印False

4 个答案:

答案 0 :(得分:2)

这是因为set(a)&set(b)&set(c)是真实的,但与True不是同一个对象,这是您使用set(a)&set(b)&set(c) is True检查的内容(它们有不同的ID):

>>> id(set(a)&set(b)&set(c)) 
140627137313352
>>> id(True)
9544944

离开is True部分,即

if set(a)&set(b)&set(c): # truthy if not empty
    print('aa')
else:
    print('ss')

答案 1 :(得分:2)

删除is True

a=[1,2,3]
b=[0,1,0]
c=[5,1,5]
if set(a)&set(b)&set(c):
    print("aa")
else:
    print('ss')

set(a)&set(b)&set(c)返回的set([1])不是True

答案 2 :(得分:0)

你是if语句有点不对劲。如果你想查看1是否在a,b,c尝试

if 1 in a and b and c:

    print('aa')

答案 3 :(得分:0)

您可以尝试set.intersection()

a = [1,2,3]
b = [0,1,0]
c = [5,1,5]

d = set.intersection(set(a), set(b), set(c)) #set([1])
相关问题