python - Python substring 匹配问题和或逻辑

我开始学习 Python 并使用以下逻辑编写一个小脚本,并且可以理解输出的原因或我得到的结果。我有以下代码:

test = ['aa01', 'zz02', '01']
    for element in test:
        print(f'{element}')
        if 'aa' or 'zz' in element:
            print('Condition met')
        else:
            print('Condition not met')

我得到以下输出:

aa01
Condition met
zz02
Condition met
01
Condition met

使用这行代码:

if 'aa' or 'zz' in element:

我期望列表中的每个元素都查找 substring 匹配项(“aa”或“zz”),然后在满足条件时打印。根据输出,我不明白为什么第三个元素匹配这个既没有 substring 的条件。

如果我执行以下代码:

'zz' in 'aa01'
 False

和以下代码:

'zz' or 'aa' in 'aa'
'zz'

在这个阶段,我不是 substring 匹配的工作方式,即“aa”中没有“zz”。是否返回'zz'不在'aa'中?

我还尝试了以下代码,这也没有给我想要的结果,至少根据我到目前为止对 Python 的理解我所期望的。

test = ['aa01', 'zz02', '01']
for element in test:
    print(f'{element}')
    if 'aa' in element:
        print('Condition met')
    if 'zz' in element:
        print('Condition met')
    else:
        print('Condition not met')

这是我得到的输出:

aa01
Condition met
Condition not met
zz02
Condition met
01
Condition not met

那么上面的aa01如何显示条件满足,同时又显示条件不满足。

我无法解释我所看到的行为。希望有人向我解释一下或指出一些有关此的信息。

非常感谢您的帮助。

回答1

那条线没有做你认为它正在做的事情。

当您编写 if this in that 时,它会检查 that 是否包含 this。如果你只写 if this: 那么它只是一个真实的检查,除了 '' 空字符串之外的字符串总是会返回 True 。

因此,当您运行 if this or that in those: 时,您实际上在做的是在同一行询问“如果这个”和“如果那个在那些中”。

要使该行执行您期望的操作,应该这样编写:

if 'aa' in element or 'zz' in element:
    ... do something

相似文章

随机推荐

最新文章