如果具有复合条件的语句,则针对列表中的每个项验证条件

时间:2016-07-25 18:50:33

标签: python python-3.x if-statement

我发现了一个类似的问题here,但答案似乎并不适用于我的问题。

这是我的代码:

y = 3
list1 = [1,2,3,4,5]

if y != 0 or y != list1:
    print("y is not in range")
else:
    print(y)

继续打印y is not in range

如果y不等于任何项目,我的目标是检查0 是否等于y 在列表中。

我了解上述or应该是and,我特别感兴趣的是如何检查列表中包含y的情况。

2 个答案:

答案 0 :(得分:10)

您想要检查y是否与0 AND 不在列表中:

if y != 0 and y not in list1:

使用or表示条件的一个就足够了,因此,y != 0它会返回True而不会转到y != list1返回False,因为int不是list,在这种情况下您必须使用in

如果你真的想使用or,那么你想要的是什么:

if not (y == 0 or y in list1):
    print('y not in range')
else:
    print(y)

记得De Morgan法律:

not (y == 0 or y in list1) == (not y == 0) and (not y in list1) == y != 0 and y not in list1

答案 1 :(得分:1)

关于标题中提到的问题,您可以编写类似

的内容
true if condition else false for y in list1

检查condition列表y中的每个元素list1HERE一个有用的链接。

否则@Bakuriu的回答是正确的。