2016-03-02 69 views
-2

我想道歉如果這個問題太明顯或之前被問過,但我一直在這個問題上停留了好幾個小時。大小爲2的列表不接受索引0 Python IndexError

我正在創建一個程序,該程序根據一個由兩個值列表組成的單獨文件,獲取有關客戶的信息列表並調整其餘額。每個列表的第一個值是一個識別號碼,將被比較,然後調整列表的其他值。

我得到:IndexError: list index out of range爲行if i[0] == y[0]:

def computeTransactions(transactions, old_master_list): 
    transaction_list = [] 
    for y in old_master_list: 
     for line in transactions: 
     b = line.split() 
     print b 
     transaction_list.append(b) 
     print transaction_list   
     for i in transaction_list: 
     print len(i) 
     if i[0] == y[0]: 
      y[2] = float(y[2]) 
      i[1] = float(i[1]) 
      y[2] += i[1] 
      y[2] = round(y[2], 2) 
      y[2] = str(y[2]) 
     print "" 
     print y 

我真的很感激任何幫助,您可以提供。謝謝!

編輯: 我想感謝每個花時間幫助我的人,我找到了答案。事實證明,「交易」(這是我打開的文件)在最後添加了一個空格,所以我在transaction_list的末尾添加了一個空的列表。一個簡單的transaction_list = filter(None, transaction_list)實際上解決了我的問題。我很抱歉,如果這是再浪費時間

+2

做什麼你看,當你做'打印len(y)'旁邊的'印刷len(i)'? –

+1

就在'if if [0] == y [0]:'write'print y'之前,看看它有什麼價值?它必須是空的。 –

+0

目前還不清楚我或者是什麼類型的數據。通常情況下,這些索引在列表中用作索引,但您似乎將它們用作列表...因此,您正在迭代列表的列表?話雖如此,看看事務和舊主列表的參數是 –

回答

0

看樣子,你就吃下時,你應該只進行一次消費它transactions多次:

def computeTransactions(transactions, old_master_list): 
    transaction_list = [] 

    for line in transactions: 
     b = line.split() 
     transaction_list.append(b) 

    for y in old_master_list: 
     for i in transaction_list: 
      if i[0] == y[0]: 
       y[2] = float(y[2]) 
       i[1] = float(i[1]) 
       y[2] += i[1] 
       y[2] = round(y[2], 2) 
       y[2] = str(y[2]) 
相關問題