如何验证每个列表是否包含一个公共号码?
How do I verify if every list contains a common number?
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
,但即使我将 True
更改为 False
,它也会打印 ss
。
那是因为 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')
删除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)
returns set([1])
这不是 True
.
你的 if 语句有点错误。如果你想看看 1 是否在 a,b,c 中,试试
if 1 in a and b and c:
print('aa')
你可以试试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])
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
,但即使我将 True
更改为 False
,它也会打印 ss
。
那是因为 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')
删除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)
returns set([1])
这不是 True
.
你的 if 语句有点错误。如果你想看看 1 是否在 a,b,c 中,试试
if 1 in a and b and c:
print('aa')
你可以试试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])