Skip to main content
 首页 » 编程设计

python之Python If 语句中的运算符

2025年05月04日13sky-heaven

这是我拥有的一段简单的代码:

>>> 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')): 

要有或条件,你可以使用任何函数,像这样

if any(item in i for item in ('11', '12')):