我们可以在python中针对同一个表达式检查多个变量

时间:2016-09-16 11:02:19

标签: python

我知道我们可以根据多个条件检查变量

if all(x >= 2 for x in (A, B, C, D)):
    print A, B, C, D

我的问题是,我们可以反过来吗? 我们可以针对相同的条件(一个或两个)检查一个或两个变量

null_check = (None,'','None')
if variable1 not in null_check and variable2 not in null_check:
    print (variable1, variable2)

我们可以将上面的代码重写为

if variable1 and variable2 not in null_check:
    print (variable1, variable2)

如果是,哪一个是更好的做法?

提前致谢:)

3 个答案:

答案 0 :(得分:3)

您可以将变量放在listtuple中,然后使用all使用相同的构思来检查它们是否都在tuple中。

if all(var not in null_check for var in (variable1, variable2)):
    print (variable1, variable2)

答案 1 :(得分:1)

您可以与第一个代码块完全相同:

null_check = (None,'','None')
if all(variable not in null_check for variable in (variable1, variable2)):
    print (variable1, variable2)

或者:

null_check = (None,'','None')
variables = variable1, variable2 # defined elsewhere
if all(variable not in null_check for variable in variables:
    print (*variables)

答案 2 :(得分:1)

不,你不能这样做,但作为一种pythonic方法,你可以将null_check项目放在set中。并检查交叉路口:

null_check = {None,'','None'}
if null_check.intersection({var1, var2}): # instead of `or` or `any()` function
    # pass  
if len(null_check.intersection({var1, var2})) == 2: # instead of `and` or `all()` function
    # pass