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
我的CSV文件包含歌曲,艺术家,年份,速度,热度,持续时间,按键,响度,模式的列。我创建了一个空列表,我试图将表示Tempo的所有浮点值附加到此列表中,但我只是得到一堆表示每个浮点数的单独列表值。似乎没有任何东西实际附加到p。我甚至尝试使用我做了一段时间的功能来平滑结果,但它没有任何效果。有什么建议吗?
答案 0 :(得分:5)
for tempo in data:
p=[]
p.append(tempo[3])
没有意义,因为每次循环都会重置p
。因此,在循环之前移动p
的初始化。
更好的是:使用列表理解来避免此类错误:
p = [tempo[3] for tempo in data]