首页 > 解决方案 > 理解顺序条件的行为

问题描述

不知何故,我在 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列表中有多次重复,有不同的条件结果。IE 一个元素可能已经被追加了 3 次,并在语句中触发了许多不同的条件。

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

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 个元素?我如何构建条件句有什么问题?我的印象是,一旦满足条件,循环就会转到列表中的下一项,这里到底发生了什么?

标签: pythonpython-3.xfor-loopif-statementnested

解决方案


推荐阅读