Python 为什么我的列表在尝试附加它们时没有加入

Python 为什么我的列表在尝试附加它们时没有加入,python,for-loop,append,Python,For Loop,Append,我的CSV文件包含歌曲、艺术家、年份、节奏、热度、持续时间、键、响度、模式等列。我制作了一个空列表,我试图将所有表示节奏的浮点值附加到这个列表中,但我一直只得到一组表示每个浮点值的单独列表值。看起来p实际上没有附加任何内容。我甚至试着用我前一段时间做的一个函数来压平结果,但没有任何效果。有什么建议吗 import csv filename='songdata.csv' reader=csv.reader(open(filename,'r')) header=next(reader) data=

我的CSV文件包含歌曲、艺术家、年份、节奏、热度、持续时间、键、响度、模式等列。我制作了一个空列表,我试图将所有表示节奏的浮点值附加到这个列表中,但我一直只得到一组表示每个浮点值的单独列表值。看起来p实际上没有附加任何内容。我甚至试着用我前一段时间做的一个函数来压平结果,但没有任何效果。有什么建议吗

import csv
filename='songdata.csv'
reader=csv.reader(open(filename,'r'))
header=next(reader)

data=[]
for row in reader:
    # row=[Song, Artist, Year, Tempo, Hotness, Duration, Key, Loudness, Mode]
    Song=row[0]
    Artist=row[1]
    Year=int(row[2])
    Tempo=float(row[3])
    Hotness=float(row[4])
    Duration=float(row[5])
    Key=int(row[6])
    Loudness=float(row[7])
    Mode=int(row[8])
    data.append([Song, Artist, Year, Tempo, Hotness, Duration, Key, Loudness, Mode])

for tempo in data:
    p=[]
    p.append(tempo[3])
    print p
没有意义,因为
p
在循环中每次都被重置。因此,将
p
的init移动到循环之前

更好的方法是:使用列表理解来避免此类错误:

for tempo in data:
    p=[]
    p.append(tempo[3])
没有意义,因为
p
在循环中每次都被重置。因此,将
p
的init移动到循环之前

更好的方法是:使用列表理解来避免此类错误:

for tempo in data:
    p=[]
    p.append(tempo[3])

对于数据中的节奏:p=[]p.append(节奏[3])
=>
p=[]
必须在循环之外<代码>用于数据中的节奏:p=[]p.append(节奏[3])=>
p=[]
必须在循环之外!该死!你知道我即将发布一个与此完全相同的答案,即使有关于使用列表comp;-)的提示+1非常感谢您!这本应该很明显,但我仍然只是一个初学者。@ChristianDean:)如果没有listcomp,回答起来就不那么有趣了。我不断重复关于listcomps的内容,因为它们不仅很漂亮,而且是避免这些副作用bug的最好方法。该死!你知道我即将发布一个与此完全相同的答案,即使有关于使用列表comp;-)的提示+1非常感谢您!这本应该很明显,但我仍然只是一个初学者。@ChristianDean:)如果没有listcomp,回答起来就不那么有趣了。我不断重复关于listcomps的内容,因为它们不仅很漂亮,而且是避免这些副作用bug的最好方法。