这是我的一个简单代码段:
>>> test = ['asas', 'asa12', 'sdsdsd12', 'vccvcvcv', 'rertrtt11']
>>> for i in test:
... if '11' in i:
... print i
...
rertrtt11
现在可以正常工作了,现在捕获包含11或12的元素,我这样做:
>>> test = ['asas', 'asa12', 'sdsdsd12', 'vccvcvcv', 'rertrtt11']
>>> for i in test:
... if '11' or '12' in i:
... print i
...
asas
asa12
sdsdsd12
vccvcvcv
rertrtt11
那是出乎意料的,我希望只捕获其中包含11或12的元素,但是输出包含所有元素。
在尝试进行故障排除时,我尝试通过and运算符来尝试了解行为:
>>> test = ['asas', 'asa12', 'sdsdsd12', 'vccvcvcv', 'rertrtt11']
>>> for i in test:
... if '11' and '12' in i:
... print i
...
asa12
sdsdsd12
现在我完全感到困惑,因为我期望一个空集,因为其中没有11和12的元素。我对python中的运算符功能的理解完全错误吗?
'11' or '12' in i
像这样评估
('11') or ('12' in i)
因此,第一部分始终是真实的。这就是为什么将它们全部打印出来的原因。在第二种情况下
('11') and ('12' in i)
在这里,第一部分始终是Truthy,因此它仅打印包含的项目12
。你可能想做
if '11' in i and '12' in i:
或者
if all(item in i for item in ('11', '12')):
要具有或条件,您可以使用any
功能,例如
if any(item in i for item in ('11', '12')):
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句