这是一个简单的程序:
#!/usr/bin/env python3
l = list(range(5))
print(l, type(l))
l = list(range(5)).remove(2)
print(l, type(l))
由于某种原因,列表在删除元素时被销毁:
[0, 1, 2, 3, 4] <class 'list'>
None <class 'NoneType'>
(程序输出)
我希望它输出
[0, 1, 3, 4]
有什么问题,如何从使用range
生成的列表中删除元素?
答案 0 :(得分:7)
您正在存储list.remove()
调用的返回值,而不是列表本身。 list.remove()
调用会更改列表并返回None
。它不返回修改后的列表。
首先存储列表:
l = list(range(5))
l.remove(2)
或使用列表理解来过滤:
l = [i for i in range(5) if i != 2]