如何使用if语句验证任何变量中是否包含任何值?我正在寻找类似的东西:
if "foo","bar","spam","eggs" in test1,test2:
如果在任何test1,test2变量中找到四个值中的任何一个,则返回true。 test1,test2应该是什么类型的?
稍后编辑: 如果我有一个列表,那将会是这样的:
test1=['foo','abc','def']
if {'foo', 'bar', 'spam', 'eggs'} in test1
答案 0 :(得分:8)
您想使用set intersections:
if {test1, test2} & {'foo', 'bar', 'spam', 'eggs'}:
# true if there is an intersection between the two sets.
因此,如果test1
和test2
中的一个设置为另一个中的四个值之一,则测试将为真。
如果您需要 test1
和test2
来使用其他集合中的值,则需要测试子集:< / p>
if {test1, test2} <= {'foo', 'bar', 'spam', 'eggs'}:
# true if all values in the first set are also in the second
答案 1 :(得分:2)
您可以在any()
内置函数中使用生成器表达式:
any(i in j for j in [test1,test2] for i in my_var)
样本:
>>> my_var={"foo","bar","spam","eggs"}
>>> test1={'a','b'}
>>> test2={'c','d'}
>>>
>>> any(i in j for j in [test1,test2] for i in my_var)
False
>>> test2={'c','foo'}
>>> any(i in j for j in [test1,test2] for i in my_var)
True