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
列表中有多次重复,有不同的条件结果。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 个元素?我如何构建条件句有什么问题?我的印象是,一旦满足条件,循环就会转到列表中的下一项,这里到底发生了什么?
解决方案
推荐阅读
- python - 从列表中访问模型实例的属性并将它们添加在一起?
- python - 打印树的内容,以便每个父级覆盖其所有子级
- java - 使用 Collectors.groupingBy() 时,TreeMap 排序不起作用
- firebase - Firebase Cloud Functions 模拟器抛出“exited with code: 1”错误
- javascript - 有没有办法让函数返回竞争承诺的值(就像 AWAIT 一样)?
- ios - 当颜色清除 SwiftUI 时,点击操作不起作用
- javascript - 如何在Javascript中将所有数据属性从输入中获取到数组中?
- node.js - Microsoft Bot Web Chat 和 Microsoft Teams 不起作用,但 bot 在 localhost 上工作
- scala.js - 为javascript模块编写scalajs外观时如何使用JSImport
- python - 如何确保 Django CMS 初始化应用程序 url?