为啥我的列表没有加入当我尝试追加它们 Python
Posted
技术标签:
【中文标题】为啥我的列表没有加入当我尝试追加它们 Python【英文标题】:Why my lists are not Joining When I try to Append Them Python为什么我的列表没有加入当我尝试追加它们 Python 【发布时间】:2017-11-26 03:24:05 【问题描述】: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。我什至尝试使用我不久前制作的函数来展平结果,但它没有任何效果。有什么建议吗?
【问题讨论】:
for tempo in data: p=[] p.append(tempo[3])
=> p = []
必须在循环之外!
【参考方案1】:
for tempo in data:
p=[]
p.append(tempo[3])
没有意义,因为p
每次在循环中都会重置。所以把p
的init移到循环之前。
更好的是:使用 列表推导 来避免此类错误:
p = [tempo[3] for tempo in data]
【讨论】:
当吉特!你知道我要像这样完全发布一个答案,即使有关于使用列表组合的提示;-) +1 非常感谢!这应该很明显,但我仍然只是一个初学者。 @ChristianDean :) 如果没有 listcomp,回答起来就没那么有趣了。我不断重复有关 listcomps 的内容,因为它们不仅美观,而且是避免此类副作用错误的最佳方法。以上是关于为啥我的列表没有加入当我尝试追加它们 Python的主要内容,如果未能解决你的问题,请参考以下文章
为啥当我追加到其中的列表时,元组的内容会发生变化,但在更新变量时不会发生变化?