作者peterwolf (pw)
看板Python
標題[問題] 從 list 中移除空字串項目
時間Fri Sep 17 12:49:49 2010
請教各位先進,
我手上有一個 list ,內容大概像這樣
[1, 2, 3, 4, 1, 1, 1, 1, '', '', '', '', '', '', '', '']
我寫了一個小迴圈,想要把裡面的空字串項目 ('') 移除,讓這個
list 變成 [1, 2, 3, 4, 1, 1, 1, 1] ,內容如下:
lst = [1, 2, 3, 4, 1, 1, 1, 1, '', '', '', '', '', '', '', '']
for i in lst:
if i == '':
lst.remove(i)
但結果卻是[1, 2, 3, 4, 1, 1, 1, 1, '', '', '', '']!
很尷尬地,它只刪了一半的空字串項目。
能不能請教一下,這是什麼原因呢?
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 118.169.36.164
→ ypcat:可以用 [i for i in lst if i!=''] 09/17 13:01
→ peterwolf:謝謝你! :) 09/17 13:10
推 apua:如果空字串都在後面,可以不用for迴圈,只要找出第一個空字串 09/17 13:38
→ apua:的位置..... lst = lst[:lst.index('')] 09/17 13:38
推 SMUGEN:應該是因為邊iterate一邊改變item的原因吧 09/17 14:24
→ yjc1:filter(lambda x: x!='',lst),但list comprehension較一般化 09/17 21:56
→ apua:del lst[lst.index(''):] 09/18 00:17