理解顺序条件句的行为

2024-09-28 20:51:53 发布

您现在位置:Python中文网/ 问答频道 /正文

不知何故,我在Python中做到了这一点,却没有明确了解条件语句是如何工作的(尤其是嵌套在循环中时)。我在设计一个迭代列表的算法时实现了这一点,并以1:1的比例构建了一个新列表

例如:

x = ['test1', 'test2', 'test3']
y = []

for z in x:
    if z == #whatever:
        y.append(f'{z}{'is good'}'
    if z == #whatever:
        y.append(f'{z}{'is bad'}'

人们会认为,在循环结束时,y和x的长度都是相同的。事实并非如此,我在我的y列表中有多个重复,具有不同的条件结果。也就是说,一个元素可能被附加了三次,并在语句中触发了许多不同的条件

所以,我开始测试,变得更加困惑:

import re

regexp = r'webaddy'
regexp2 = r'Web Addy'
zd = ['test', 'webaddy55', 'sss', 'Web Addy:99']


for xc in zd:
    if re.match(regexp, xc):
        print('This has webaddy' + ' | ' + xc)
    if re.match(regexp2, xc):
        print('This has Web Addy' + ' | ' + xc)
    else:
        print("Works" + ' | ' + xc)

我对此的预期输出为:

Works | test
This has webaddy | webaddy55
Works | sss
This has Web Addy | Web Addy:99

实际输出为:

Works | test
This has webaddy | webaddy55
Works | webaddy55
Works | sss
This has Web Addy | Web Addy:99

它怎么可能有5个输出,而列表中只有4个元素?我构造条件句的方式有什么问题?我的印象是,一旦满足了条件,循环就会转到列表中的下一项,这里到底发生了什么


Tags: testreweb列表ifthis条件has