python-3.x - Python中的'in'有多灵活,例如yyy中的'xxx':
问题描述
之间是否存在有意义的区别:
z='xxx'
if z in ['xxx', 'yyy']:
if 'xxx' or 'yyy' in z:
'in' 将允许部分和拆分字符串匹配吗?
if 'xx yy' in 'xx zz yy':
我花了一整天的时间寻找错误,归结为上述内容。否则,代码是逐行相同的。最糟糕的是两个脚本都可以正常工作,我只是在拼命整合它们。其他人关于遗留/部分数据的遗留代码,文档有限。我最终修复了它,但这些是我挥之不去的问题。
解决方案
欢迎崩溃
是的,有一个有意义的区别
z='xxx'
z in ['xxx', 'yyy']
正在检查列表是否包含它所做的“xxx”
if 'xxx' or 'yyy' in z:
将始终返回 True 因为非空字符串是真实的;即是真
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']):
推荐阅读
- python - Aldryn-Django 与 Django 版本不兼容
- github - 如何为 Github 存储库或文件创建数据库范围凭据?
- windows - 无效的 ICC 配置文件使用 WIC 从 WCS 返回 opRGB
- php - PHPUnit @covers 对性能的影响
- java - android studio 应用签名耗时过长
- javascript - UnhandledPromiseRejectionWarning: FetchError: invalid json response body at
- graphics - 如何确定两个矩形是否重叠(角度)
- ansible - 在 ansible 角色之间传递变量
- reactjs - 无法将数据库值传递给 redux 表单
- powershell - 是否有一个简单的 powershell 脚本可以根据 PnPDeviceID 重命名 NetConnectionID?如果 PnPDeviceID 为“PCI\VEN”,则将 NIC 重命名为“Internet”