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