无支撑v。括号内';对于循环';用python?

无支撑v。括号内';对于循环';用python?,python,list,for-loop,Python,List,For Loop,我很困惑为什么以下两种for-loop场景会从同一行列表生成不同的输出: 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:为循环括起 当我运行以下命令时: lines = ["Total

我很困惑为什么以下两种for-loop场景会从同一行列表生成不同的输出:

 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:为循环括起

当我运行以下命令时:

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 line in lines:
    lines = ["Total = "+line]
print lines
行仅变为:

['Total = 174.31\n']

我将非常感谢任何帮助解释这里发生的事情!(另外,我应该提到,我对场景1的输出更感兴趣,但希望使用场景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循环在
行中进行时,您将添加新项。任何时候修改容器时,都可能会对结果造成破坏

你读过吗?你所说的“括号内的for循环”实际上是一个列表理解,它根本不是for循环(尽管它有一些相似之处)!我没有意识到……我不知道如何用谷歌搜索“括号中的for循环”。这就解释了很多问题。
list
不是Python中的内置代码吗?@PeterWood我错了。编辑以反映这一点。是的,
list
是内置列表类型的名称。
list
确实是一个内置类型,您可以轻松检查。@Dennis很高兴它能工作!在你方便的时候接受答案。