2014-10-09 83 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