2016-11-09 70 views
1

ExpenseL是我的元組的名單,我嘗試從列表開始從開始消除對停止但我得到這個錯誤:在removeFromAtoB expenseL.pop(I) 類型錯誤:'元組'對象不能被解釋爲整數 請幫助我! :)列表元組的刪除錯誤

def removeFromAtoB(): 
    aux = copy.deepcopy(expenseL) 
    print(expenseL, "\n") 
    start = int(input("Starting point: ")) 
    stop = int(input("Ending point: ")) 
    j = 0 
    for i in expenseL: 
     if j >= start and j <= stop: 
      expenseL.pop(i) 
     j += 1 
    print(expenseL) 

回答

2

你遍歷你的元組的列表:

for i in expenseL 

這意味着i將是那些元組中的一個。然後嘗試在list.pop使用它:

expenseL.pop(i) 

這是行不通的,因爲list.pop預期的指數。只要列舉一下你的清單:

for index, tpl in enumerate(expenseL): 
    ... 
    expenseL.pop(index) 

但是這也打破了,因爲當你刪除一個元素時索引會改變。你可以規避由增加在這種情況下j,但更簡單的方式就是分片分配一個空列表:

def removeFromAtoB(): 
    start = int(input("Starting point: ")) 
    stop = int(input("Ending point: ")) 
    expenseL[start:stop+1] = [] 
+0

非常感謝,現在的工作!!!! :) –