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