'in' 在 Python 中有多灵活,例如如果 'xxx' 在 yyy 中:

How flexible is 'in' in Python e.g. if 'xxx' in yyy:

两者之间是否存在有意义的区别:

z='xxx'
if z in ['xxx', 'yyy']:
if 'xxx' or 'yyy' in z:

'in' 是否允许部分和拆分字符串匹配?

if 'xx yy' in 'xx zz yy':

我花了一整天的时间寻找错误,归结为以上内容。否则代码是逐行相同的。最糟糕的是这两个脚本都有效,我只是花了很多时间来整合它们。其他人关于 legacy/partial 数据的遗留代码,文档有限。我最后修好了,但这些都是我挥之不去的问题。

欢迎崩溃

是的,有一个有意义的区别

z='xxx'
z in ['xxx', 'yyy']

正在检查列表是否包含 'xxx' 它包含

if 'xxx' or 'yyy' in z:

将始终 return 为真,因为非空字符串为真; IE if ('xxx'): 为真

您可以更明确地重写为

if 'xxx' or ('yyy' in z):

我相信你要找的更像这样:

if any([i in z for i in ['xxx', 'yyy']):

检查 'xxx' 或 'yyy' 是否在 z

FWIW;还有:

if all([i in z for i in ['xxx', 'yyy']):

关于你的问题

if 'xx yy' in 'xx zz yy':

那只会检查确切的字符串文字;如果您想同时查找 xxyy ,有多种方法可以处理它,但我可能会将第一个字符串转换为列表并检查如下元素:

if all([i in 'xx zz yy' for i in 'xx yy'.split(" ")]):

相同
if all([i in 'xx zz yy' for i in ['xx', 'yy']):