我想检查数组中已有的2个元素。 现在我的代码是
Y = [[1, 2, 3], [4, 5]]
if (1 in Y) &(2 in Y):
print("yes")
else:
print("no")
我想打印出来是因为Y的[1,2,3]有1& 2.但现在,它打印出来没有。
例如,如果if (1 in Y) &(4 in Y):
是我的if语句,那么我想打印出no,因为1& 4不在同一个数组中。
所以,我无法理解为什么我的代码没有打印出来。我怎么解决这个问题?
答案 0 :(得分:3)
if X in Y
语句检查Y
是否存在X
。在您的代码中(如果我们简化步骤)它会检查:
X == [1, 2, 3] or X == [4, 5]
由于这些都不是真的,答案是False
。
如果我理解正确,你想做的是:
flag = False
for item in Y:
if 1 in item and 2 in item:
flag = True
break
print("yes") if flag else print("no")
答案 1 :(得分:2)
>>> rows = [[1, 2, 3], [4, 5]]
>>> to_search = [1, 2]
Y
>>> any(all(x in row for x in to_search) for row in rows)
True
应该有一个rows
子列表,其中包含来自x
的每个to_search
。
Y
>>> all(any(x in row for row in rows) for x in to_search)
True
x
列表中的每个to_search
都应位于rows
的一个子列表中。
使用[1, 4]
,两者之间的差异变得更加明显。 1
和4
都在Y
的某个位置,但不在同一个子列表中:
Y
>>> to_search = [1, 4]
>>> any(all(x in row for x in to_search) for row in rows)
False
Y
>>> all(any(x in row for row in rows) for x in to_search)
True
答案 2 :(得分:0)
这会对你有帮助吗?
X, Y = [[1, 2, 3], [4, 5]]
if 1 in X and 2 in X:
print("yes")
else:
print("no")
答案 3 :(得分:0)
你的数组不是正常的列表..它是一个列表列表。如果你想检查你需要检查Y中的每个项目。它应该是这样的
for list in Y:
if (1 in list) and (2 in list):
print("Yes")
break
else:
print("No")