Python IF多个“和”“或”在一个语句中

时间:2016-03-30 01:51:44

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

我只是想知道以下if语句是否有效:

    value=[1,2,3,4,5,f]
    target = [1,2,3,4,5,6,f]
    if value[0] in target OR value[1] in target AND value[6] in target:
       print ("good")

我的目标是确保同时满足以下两项要求: 1.值[6]必须在目标中 2.目标中的值[0]或值[1] 如果我做了一个不好的例子,请道歉,但我的问题是,如果我可以制作三个AND&还是在一个声明中?非常感谢!

2 个答案:

答案 0 :(得分:7)

使用括号对条件进行分组:

if value[6] in target and (value[0] in target or value[1] in target):

请注意,如果要将in定义为一组,则可以在target查找定时:

target = {1,2,3,4,5,6,f}

并且,正如@Pramod在评论中所提到的,在这种情况下value[6]将导致IndexError,因为value中只定义了6个元素,并且索引是基于0的。

答案 1 :(得分:0)

如果我没有错并且有优先权,那么这样做:

if x==True or y==True and z==True:
    do smth

想做:

if x==True or (y==True and z==True):

不喜欢做:

(if x==True or y==True) and z==True:

但正如@alecxe 所评论的,当使用超过 2 个逻辑参数时,使用 () 总是更安全。