Skip to main content
 首页 » 编程设计

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

2025年05月04日31cloudgamer

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 的浮点值 append 到这个列表中,但我一直只得到一堆代表每个 float 的单独列表值。似乎实际上没有任何内容 append 到 p。我什至尝试用我前一段时间制作的函数将结果展平,但它没有任何效果。有什么建议吗?

请您参考如下方法:

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

没有意义,因为 p 在循环中每次都被重置。所以将 p 的 init 移动到循环之前。

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

p = [tempo[3] for tempo in data]