Python 子串匹配问题与或逻辑

Python substring matching question and or logic

我开始学习 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:

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

如果我执行以下代码:

'zz' in 'aa01'
 False

和以下代码:

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

在这个阶段我不知道子字符串匹配是如何工作的,即 '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是怎么显示Condition满足的同时又显示Condition不满足呢

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

非常感谢您的帮助。

那条线并没有像你想象的那样做。

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

所以当你 运行 if this or that in those: 时,你实际上在做的是在同一行上询问 'if this' 和 'if that in those'。

要使该行按照您的预期进行,应该这样写:

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