从python中使用范围生成的列表中删除元素?

时间:2014-10-09 16:20:29

标签: python

这是一个简单的程序:

#!/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生成的列表中删除元素?

1 个答案:

答案 0 :(得分:7)

您正在存储list.remove()调用的返回值,而不是列表本身。 list.remove()调用会更改列表并返回None。它返回修改后的列表。

首先存储列表:

l = list(range(5))
l.remove(2)

或使用列表理解来过滤:

l = [i for i in range(5) if i != 2]