提问人:Crash 提问时间:8/28/2021 更新时间:8/28/2021 访问量:623
Python 中 'in' 的灵活性如何,例如,如果 yyy 中的 'xxx':
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':
我花了一整天的时间寻找虫子,归结为上述内容。否则,代码行与行相同。最糟糕的是两个脚本都有效,我只是花了很长时间来整合它们。其他人在遗留/部分数据上的遗留代码,文档有限。我最终修复了它,但这些是我挥之不去的问题。
答:
0赞
Schalton
8/28/2021
#1
欢迎崩溃
是的,有一个有意义的区别
z='xxx'
z in ['xxx', 'yyy']
正在检查列表是否包含“xxx”,它确实包含
if 'xxx' or 'yyy' in z:
将始终返回 True,因为非空字符串为 truey;即为真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':
这只会检查确切的字符串文字;如果你想同时寻找两者,或者有很多方法可以处理它,但我可能会把第一个字符串变成一个列表,并检查这样的元素:xx
yy
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']):
评论
0赞
Crash
8/28/2021
谢谢。感谢您的解释清晰透彻。
0赞
Schalton
8/30/2021
@Crash很高兴有帮助,如果仅此而已,请将问题标记为已回答。欢迎来到社区
下一个:IF语句重构的理论?
评论
x or y in z