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

Ado*_*obe 3 python

这是一个简单的程序:

#!/usr/bin/env python3

l = list(range(5))
print(l, type(l))

l = list(range(5)).remove(2)
print(l, type(l))
Run Code Online (Sandbox Code Playgroud)

由于某种原因,列表在删除元素时被销毁:

[0, 1, 2, 3, 4] <class 'list'>
None <class 'NoneType'>
Run Code Online (Sandbox Code Playgroud)

(是节目输出)

我希望它输出

[0, 1, 3, 4]
Run Code Online (Sandbox Code Playgroud)

有什么问题,如何从生成的列表中删除元素range

Mar*_*ers 7

您正在存储list.remove()呼叫的返回值,而不是列表本身.该list.remove()调用改变了列表并返回None.它并没有返回的改变列表.

首先存储列表:

l = list(range(5))
l.remove(2)
Run Code Online (Sandbox Code Playgroud)

或使用列表理解来过滤:

l = [i for i in range(5) if i != 2]
Run Code Online (Sandbox Code Playgroud)