2014-07-09 140 views
0

內的名單上有看起來像這樣的刪除列表

x = [ [ [[guy, 100], [guy, 200]], 
     [[guy, 50], [guy, 60]] ] 
    [ [[guy, 10], [guy, 20]], 
     [[guy, 5], [guy, 6]] ] ] 

每個小清單列表,是一個人,和時間的量他之前,我刪除了他離開。我試圖做這樣的:

del x[0][0][0] 

我不斷收到的錯誤是:

TypeError: List indices must be integers not lists. 

我知道那是什麼錯誤意味着,但我還沒有發現刪除該列表中的任何偉大的方式。我聽到的唯一建議是

del x[0][0][0][:] 

這給了我同樣的錯誤和:

x[0][0][0] = [] 

這也給了我同樣的錯誤。

這裏的現實是,這是我的代碼的簡化版本。 0在我的真實代碼中實際上是循環變量。

是我打電話給一個列表來識別列表的位置的錯誤,還是隻是我刪除不正確的一切?

+1

我想你可能已經在列表中刪除了一些逗號,可能在第2/4行的末尾。 –

回答

1

您錯過了第二行末尾的逗號。它應該是:

x = [ [ [[guy, 100], [guy, 200]], 
     [[guy, 50], [guy, 60]] ], 
     [ [[guy, 10], [guy, 20]], 
     [[guy, 5], [guy, 6]] ] ] 

其實你說的錯誤不會del命令,而是從列表定義來。

您還應該考慮以更好的方式構建數據。

0

我不確定是什麼導致了你需要這種「3-D」陣列,比如存儲你的對象。你應該能夠使用一維數組完成你的任務,並將時間封裝在一個類中。

class guy: 
    def __init__(self, time): 
     self.timeBeforeDelete = time 

    def __str__(self): 
     return "{0}".format(self.timeBeforeDelete) 

def printList(aList): 
    for item in aList: 
     print item 

if __name__ == '__main__': 
    x = [guy(100), guy(200), guy(50), guy(60), guy(10), guy(20), guy(5), guy(6)] 
    printList(x) 
    del x[1] 
    printList(x) 

此代碼允許您從列表中自由刪除,並將程序的複雜性降至最低。是否有任何特定的原因,您正在使用您是嵌套列表結構?要多說出你的錯誤,你實際上有一個語法錯誤。

x = [ [ [[guy, 100], [guy, 200]], 
     [[guy, 50], [guy, 60]] ], 
    [ [[guy, 10], [guy, 20]], 
     [[guy, 5], [guy, 6]] ] ] 

您錯過了逗號分隔列表項。這現在可以工作,但是這個列表結構真的應該避免,因爲它使訪問列表中的項目變得非常繁瑣。