2010-08-03 261 views
0
for row in c: 
    c1.append(row[0:13]) 

    for row in c1: 
    row.append(float(row[13])/100) 
    row.append(float(row[12])/float(row[13])/100) 
    row.append(math.log10(float(row[12]))) 

c的列表索引包含许多行和列 c1 csv文件是c仅包含第一14个元素蟒:超出范围

我得到IndexError: list index out of rangerow.append(float(row[13])/100)

一个子集

有没有人知道我在做什么错?

+3

'row'中有多少个元素?我假设少于14,这是你的问题(你试图追加不存在的项目14('[13]')。 – 2010-08-03 15:20:26

+0

http://stackoverflow.com/questions/3392677/python-list的重复-assignment-index-out-range – 2010-08-03 15:44:00

回答

1

在C1中的行不实际包含14个元素,它们包含13

在切片的第二索引是非包含。当您追加row[0:13]c1时,您在之前从元素0附加到元素13.因此,只有13个元素。

这就是为什么你在row.append(float(row[13])/100)上得到IndexError: list index out of rangerow[13]是尝试访问不存在的第14个元素。

+2

值得注意的是,如果初始数组中的元素少于13个,'c1.append(row [0:13])'也不会抛出错误。 – job 2010-08-03 15:25:22