这里提供的所有优秀答案都集中在原始海报的具体要求上,并集中在if 1 in {x,y,z}
Martijn Pieters 提出的解决方案上。
他们忽略的是这个问题的更广泛含义:
如何针对多个值测试一个变量?
例如,如果使用字符串,则提供的解决方案不适用于部分命中:
测试字符串“Wild”是否在多个值中
>>> x = "Wild things"
>>> y = "throttle it back"
>>> z = "in the beginning"
>>> if "Wild" in {x, y, z}: print (True)
...
或者
>>> x = "Wild things"
>>> y = "throttle it back"
>>> z = "in the beginning"
>>> if "Wild" in [x, y, z]: print (True)
...
对于这种情况,最容易转换为字符串
>>> [x, y, z]
['Wild things', 'throttle it back', 'in the beginning']
>>> {x, y, z}
{'in the beginning', 'throttle it back', 'Wild things'}
>>>
>>> if "Wild" in str([x, y, z]): print (True)
...
True
>>> if "Wild" in str({x, y, z}): print (True)
...
True
然而,应该注意的是,如前所述@codeforester
,这种方法会丢失单词边界,如下所示:
>>> x=['Wild things', 'throttle it back', 'in the beginning']
>>> if "rot" in str(x): print(True)
...
True
这 3 个字母rot
确实在列表中组合存在,但不是作为单个单词。测试“ rot ”会失败,但如果列表项之一是“rot in hell”,那也会失败。
结果是,如果使用此方法,请注意您的搜索条件,并注意它确实有此限制。