看板 Python 關於我們 聯絡資訊
請教各位先進, 我手上有一個 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