2011-03-13 89 views
4

我很難搞清楚如何從嵌套列表中刪除某些東西。Python:從嵌套列表中刪除單個元素

例如,我將如何從下面的列表中刪除'x'?

lst = [['x',6,5,4],[4,5,6]] 

我試過del lst[0][0],但我得到以下結果:

TypeError: 'str' object doesn't support item deletion.

我也試過一個for循環,但得到了同樣的錯誤:

for char in lst: 
    del char[0] 
+0

這兩種工作只是爲我好,因爲我期望。檢查這是否真的是你的代碼。 – delnan 2011-03-13 21:36:16

+0

有趣的是,默認的語法高亮器將'char'視爲Python特有的東西,因爲它是藍色的。沒有內置函數叫做char,既不是關鍵字。 – 2011-03-13 21:57:25

+0

@Maciej:語法高亮器不是Python特有的。 – katrielalex 2011-03-13 23:52:48

回答

3

你的代碼工作正常。你確定lst被定義爲[['x',6,5,4],[4,5,6]]?因爲如果是這樣,del lst[0][0]有效刪除'x'

也許你已經定義了lst['x',6,5,4],在這種情況下,你確實會得到你提到的錯誤。

2

在嵌套列表上使用pop(i)函數。例如:

lst = [['x',6,5,4],[4,5,6]] 
lst[0].pop(0) 
print lst #should print [[6, 5, 4], [4, 5, 6]] 

完成。

+0

'del lst [0] [0]'也適用。假設JG是正確的(我能想到的唯一合理的解釋),兩者都將以OP的真實代碼失敗。 – delnan 2011-03-13 21:54:01

0

您還可以使用「流行」。例如,

list = [['x',6,5,4],[4,5,6]] 
list[0].pop(0) 

將導致

list = [[6,5,4],[4,5,6]] 

看到這個線程更多:How to remove an element from a list by index in Python?

+0

它是否有所不同,我試圖去除的「x」是符號「[」?它適用於我使用上面的列表,但不在我的列表中。如果我做lst [0] [0]它確實返回'['但它不會讓我刪除它。 – Emily 2011-03-13 21:51:47

+0

艾米麗,真的檢查一切是否正確輸入您的代碼。奇怪的事情發生。 – 2011-03-13 22:03:23

+0

你說得對,我的清單沒有被正確創建。感謝您的幫助:) – Emily 2011-03-13 22:06:22