我有一个清单
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.
有人可以帮助我吗?
答案 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)