-2

我有一个清单

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.

有人可以在这里帮助我吗?

4

3 回答 3

3

我不清楚您期望代码做什么-您是否[['F', 30], []] 要从列表中删除“ClassList”?

如果您可以不使用打印语句,则可以使用列表理解来执行此操作:

result = [item for item in ClassList if item[1]]
于 2013-07-16T09:53:35.550 回答
1

我有一种感觉,您将 Python 视为 C#(或类似的东西)

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
于 2013-07-16T09:46:03.453 回答
0

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

你有没有尝试过

Nodelist1.remove(i)
于 2013-07-16T09:47:35.423 回答