gpt4 book ai didi

python - Python If 语句中的运算符

转载 作者:太空宇宙 更新时间:2023-11-04 07:39:21 26 4
gpt4 key购买 nike

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

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

关于python - Python If 语句中的运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26436432/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com