2010-01-13 79 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]