[問題] 從 list 中移除空字串項目

看板Python作者 (pw)時間14年前 (2010/09/17 04:49), 編輯推噓3(305)
留言8則, 5人參與, 最新討論串1/1
請教各位先進, 我手上有一個 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

09/17 13:00, , 1F

09/17 13:01, , 2F
可以用 [i for i in lst if i!='']
09/17 13:01, 2F

09/17 13:10, , 3F
謝謝你! :)
09/17 13:10, 3F

09/17 13:38, , 4F
如果空字串都在後面,可以不用for迴圈,只要找出第一個空字串
09/17 13:38, 4F

09/17 13:38, , 5F
的位置..... lst = lst[:lst.index('')]
09/17 13:38, 5F

09/17 14:24, , 6F
應該是因為邊iterate一邊改變item的原因吧
09/17 14:24, 6F

09/17 21:56, , 7F
filter(lambda x: x!='',lst),但list comprehension較一般化
09/17 21:56, 7F

09/18 00:17, , 8F
del lst[lst.index(''):]
09/18 00:17, 8F
文章代碼(AID): #1CalDmeP (Python)