2014-10-09 84 views
0

这里有一个简单的程序:从使用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生成的列表?

回答

4

您正在存储list.remove()调用的返回值,而不是列表本身。 list.remove()调用改变了列表并返回None。它确实而不是返回已更改的列表。

存储列表第一:

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

或使用列表解析来过滤:

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

那么,如何删除元素? – Adobe 2014-10-09 16:22:15

+0

哦,我明白了。谢谢。 – Adobe 2014-10-09 16:23:17