gpt4 book ai didi

python - python中不带括号的与带括号的 'for loop'之间的区别?

转载 作者:行者123 更新时间:2023-11-30 23:05:41 35 4
gpt4 key购买 nike

我很困惑为什么以下两个 for 循环场景从相同的行列表开始生成不同的输出:

 print lines
['175.11\n', '176.39\t56.887\n', '178.17\n', '176.1\t51.679\n', '176.1\t51.679\n', '175.15\n', '176.91\t32.149\t30.344\n', '182.33\n', '173.04\n', '174.31\n']

场景 #1:括号内的 for 循环

当我运行以下命令时:

lines = ["Total = "+line for line in lines]
print lines

行变成:

['Total = 175.11\n', 'Total = 176.39\t56.887\n', 'Total = 178.17\n', 'Total = 176.1\t51.679\n', 'Total = 176.1\t51.679\n', 'Total = 175.15\n', 'Total = 176.91\t32.149\t30.344\n', 'Total = 182.33\n', 'Total = 173.04\n', 'Total = 174.31\n']

场景 #2:不带括号的 for 循环

但是,当我运行这个时:

for line in lines:
lines = ["Total = "+line]
print lines

行变为仅:

['Total = 174.31\n']

如果您能帮助解释这里发生的事情,我将不胜感激! (另外,我应该提到,我对 SCENARIO #1 的输出更感兴趣,但希望使用 SCENARIO #2 的格式来完成它)。

最佳答案

您将覆盖每次循环迭代的列表,而不是附加到它。

修复方法是:

myList = []
for line in lines:
myList.append("Total = " + line) # appends the r-value to your list

但无论如何,我仍然更喜欢列表理解,因为它简洁。

您还可以使用条件列表理解:

# excludes empty lines
myList = ["Total = "+line for line in lines if len(line) > 0]

您正在修改正在迭代的列表

当您的 for 循环在您的中进行时,您正在附加新项目。任何时候当你修改一个容器时,你迭代的结果都可能是有害的。 Read this question .

关于python - python中不带括号的与带括号的 'for loop'之间的区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33059273/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com