2011-03-13 66 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