2010-08-03 250 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