2010-01-13 125 views
1

我是python的新手。我創建了一個列表如何從Python中的列表中刪除元素?

a = [[3,4],[5],[6,7,8]] 

我想從此列表中刪除3個。這是什麼命令?

+4

'list'是你的對象的壞名字,因爲它隱藏了一個內建的對象。 – 2010-01-13 11:54:57

+1

你正在使用什麼教程?你在哪裏閱讀關於名單? – 2010-01-13 12:09:45

回答

5

容易,你可以試試這個

del a[0][0] 
2
a[0].remove(3) 

(不得不添加更多的文本,它是足夠長的時間)

2

使用此:

del a[0][0] 

爲了更好地理解名單,字典等,我建議你應該閱讀Dive Into Python 你會發現C第3章非常有用。

0

如果我理解你的問題,你有一個列表中的列表,你想從第一個列表中刪除第一個元素。因此,使用:

del a[0][0] 
2

,如果你不知道「3」,

所有的
>>> for n,i in enumerate(list): 
... if 3 in i: list[n].remove(3) 
... 
>>> list 
[[4], [5], [6, 7, 8]] 
>>> 
0

首先,要小心,因爲你是陰影內置的名稱「列表」。 This

a_list = [[3,4],[5],[6,7,3, 3, 8]] 

def clear_list_from_item(a_list, item): 
    try: 
     while True: a_list.remove(item) 
    except ValueError: 
     return a_list 

a_list = [clear_list_from_item(x, 3) for x in a_list] 

這將修改您的原始列表到位。

11

很多可能的方式

>>> mylist = [[3,4],[5],[6,7,8]] 
>>> mylist[0] = [4] 
>>> mylist 
[[4], [5], [6, 7, 8]] 
>>> mylist = [[3,4],[5],[6,7,8]] 
>>> del mylist[0][0] 
>>> mylist 
[[4], [5], [6, 7, 8]] 
>>> mylist = [[3,4],[5],[6,7,8]] 
>>> mylist[0].remove(3) 
>>> mylist 
[[4], [5], [6, 7, 8]] 

隨你挑:)

+0

+1教魚的人。 (我也重新格式化並明確表示'del'是一個聲明,而不是一個函數。) – 2010-01-13 13:29:21

2

假設,你想從列表中刪除列表中的所有3S:

>>> lst = [[3,4],[5],[6,7,8]] 
>>> [[i for i in el if i != 3] for el in lst] 
[[4], [5], [6, 7, 8]] 
+0

由於答案是有用的,所以我投了贊成票,但是經過一年多的python編程,我仍然沒有看到列舉理解的好處就像用一些代碼的東西來代替它,這可能不那麼呆板。 ghostdog74的答案几乎可以立即識別,但我總是不得不暫停和精神分析列表解析。 2010-01-13 12:32:37

+0

@Bryan:這是怎麼回事? ghostdog74的回答是不正確的,因爲它只能刪除單個3,它也是深度嵌套的,ghostdog74試圖通過展開刪除並使其更不易讀或pythonic來避免。 – SilentGhost 2010-01-13 12:39:06

+0

我說這是鈍的,因爲除非你使用了大量的列表解析,你必須在腦海中解析發生的事情。所有的開發人員都可以非常快速地識別和理解嵌套循環,這比他們能夠解析像「我在el中的我」更快的東西。也許我只是一個老狗,不能學習新的技巧,但我更喜歡用單行列表解析的顯式循環。 – 2010-01-13 17:18:07

0

兩種簡單的方法去除從列表中,如果您知道所關心的元素位於位置0:

a[0].pop (0) 
del a[0][0]