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
。
答案 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])