我想在阵列中检查2个元素

时间:2017-07-29 09:20:38

标签: python

我想检查数组中已有的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不在同一个数组中。 所以,我无法理解为什么我的代码没有打印出来。我怎么解决这个问题?

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)

您可以使用allany的组合。

>>> rows = [[1, 2, 3], [4, 5]]

[1,2]

>>> to_search = [1, 2]

检查1和2是否在Y

的同一子列表中
>>> any(all(x in row for x in to_search) for row in rows)
True

应该有一个rows子列表,其中包含来自x的每个to_search

检查1和2是否在Y

>>> all(any(x in row for row in rows) for x in to_search)
True

x列表中的每个to_search都应位于rows的一个子列表中。

[1,4]

使用[1, 4],两者之间的差异变得更加明显。 14都在Y的某个位置,但不在同一个子列表中:

检查1和4是否在Y

的同一子列表中
>>> to_search = [1, 4]
>>> any(all(x in row for x in to_search) for row in rows)
False

检查1和4是否在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")