Python 如果字符串1或字符串2在元组中

Python 如果字符串1或字符串2在元组中,python,python-3.x,tuples,string-matching,Python,Python 3.x,Tuples,String Matching,因此,我偶然发现了一个问题(最终通过实验解决了这个问题),即检查元组中是否存在字符串 if 'String1' or 'String2' in tuple: 计算True,即使两者都不在元组中 if 'String1' in tuple or 'String2' in tuple: 给我想要的结果 第一个变体实际评估了什么 编辑:@Cricket\u 007。。。您在dupe报告中指出的问题没有涵盖中的,因此我认为这不是dupe。区别在于集装箱检查中的, 如果您中断此语句:如果元组中的“St

因此,我偶然发现了一个问题(最终通过实验解决了这个问题),即检查元组中是否存在字符串

if 'String1' or 'String2' in tuple:
计算
True
,即使两者都不在元组中

if 'String1' in tuple or 'String2' in tuple:
给我想要的结果

第一个变体实际评估了什么


编辑:@Cricket\u 007。。。您在dupe报告中指出的问题没有涵盖中的
,因此我认为这不是dupe。

区别在于
集装箱检查中的

如果您中断此语句:
如果元组中的“String1”或“String2”:

  • 'String1'
    返回True,因为只要字符串不是空的,测试
    str()
    就会返回
    True

  • 元组中的“String2”
    仅当字符串包含在元组中时返回True

第一个条件始终返回True


第二行首先在包容中测试<代码>两个变量,然后在结果< < /p> <代码> >(“STRIG1”)或“(Strug2)元组):< /代码>读取Python运算符优先级表。考虑在代码中使用任何一个可能的副本>(在S(Strug1),Strug2)中的“S”元组(< /代码>)。你的问题是

'String1'
是你写的'truthy',所以
如果元组中的'truthy'或'String2'为真
将是
并且是等效的。谢谢你的回答,@Vinny,因为'True'或(String2 in tuple)[碰巧是假的]整件事都是真的吗?@tink,没错。python将测试分解为元组中的
String1
String2。第一个总是返回True