从python中的列表中删除一个元素

时间:2013-07-16 09:38:06

标签: python

我有一个清单

Nodelist1 = [
    [['B', 10], ['IN', 1000]],
    [['C', 15], ['OUT', 1001]],
    [['F', 30], []]
]

我正在检查列表中的索引为1的元素是否为空,如果为空,我想将其从列表中删除。

我的代码是这样的:

for i in range(len(Nodelist1)):
    if Nodelist1[i][1]==NULL:
        print "This node is deleted",Nodelist1[i][0]
        Nodelist1.remove(Nodelist1[i][0])
    else:
        print Nodelist1[i][0]

但这给了我一个错误:

Nodelist1.remove(Nodelist1[i][0])
ValueError: list.remove(x): x not in list.

有人可以帮助我吗?

3 个答案:

答案 0 :(得分:3)

我不清楚你期望代码做什么 - 你是否试图从列表'ClassList'中删除[['F', 30], []]

如果你可以不使用print语句,你可以使用列表理解来完成这个:

result = [item for item in ClassList if item[1]]

答案 1 :(得分:1)

我觉得你像C#(或类似的东西)一样对待Python

Python中没有NULL。当您“删除”列表中的某个项目时,它不会被替换为空值,只需将其删除即可。

示例:

>>> l = range(10)
>>> l
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> del l[5]
>>> l
[0, 1, 2, 3, 4, 6, 7, 8, 9]
>>> l.remove(4)
>>> l
[0, 1, 2, 3, 6, 7, 8, 9]

那么,你说的是什么:

  

我正在检查列表中是否删除了索引为1的元素,如果删除了我想将其从列表中删除。

不是Python的工作原理,一旦项目被删除,它就已经从列表中删除了,你无法“检查”该项目。但您可以检查项目的状态

>>> 4 in l
False

答案 2 :(得分:0)

我认为你删除节点列表中的项目的方式是错误的

你试过吗

Nodelist1.remove(i)