2017-07-04 23 views
-2

我有這段代碼旨在根據是​​否等於Iris-versicolor將2D數組的單元格值更改爲1或0。感知器示例中的列表索引超出範圍

for row in data: 
    if (row[4] == "Iris-versicolor"): 
     row[4] == 1 
    else: 
     row[4] == 0 

的問題是,它給了我一個錯誤的if語句說"IndexError : list index out of range"線。我理解錯誤(我認爲),說我試圖訪問一個不存在的單元格,除了我已檢查並且我的數據數組有第5列(索引爲4),並且我沒有看到在哪裏否則錯誤可能來自。

任何幫助是極大的讚賞,

Mindoo

編輯:這是我使用的數據庫的鏈接。 其衆所周知的Iris database

+0

是否還有更多相關的代碼可以發佈? – 23k

+0

你能分享你的'數據'嗎? –

+0

@ 23k我不這麼認爲,我可以發佈解析來自.csv文件的數據的代碼,但是在解析過程中通過在出錯之前打印出數據數組並檢查了一切都沒有出錯。我想要它。 – mindoo

回答

3

試圖改變

row[4] == 1 

row[4] = 1 

也與該行[4] = 0

+0

好的趕上!我沒有注意到這個愚蠢的錯誤。不幸的是,它並沒有解決我的問題。我的錯誤在我提供的代碼片段的第2行給出。 – mindoo

+0

您是否嘗試過打印過所有數據? '排數據: 打印行[0] 打印行[1] 打印行[2] 打印行[3] 打印行[4]' – Rence

0

如果數據列表

for row in data: 
    if len(row) >= 4: 
     if (row[4] == "Iris-versicolor"): 
      row[4] = 1 
     else: 
      row[4] = 0 

檢查清單如果行至少有5個元素befo重新訪問它。