Re: [問題] if 'string' not in i:

看板Python作者 (.)時間12年前 (2013/08/24 03:12), 編輯推噓2(205)
留言7則, 4人參與, 最新討論串2/6 (看更多)
※ 引述《sean72 (.)》之銘言: : #Python 3.3 : a = ['a','b','c','d','x/'] : for i in a: : if '/' not in i: : a.remove(i) : print(a) : 預期輸出: ['x/'] : 實際輸出: ['b', 'd', 'x/'] : 為什麼 b 和 d 兩個元素無法被濾掉? : 雖然可以反向繞路 但還是非常疑惑 : tmp = [] : for i in a: : if '/' in i: : tmp.append(i) : print(tmp) : 感謝幫忙 a = ['1','2','3','4','5','6','7','8','x'] for i in a: print(i) if 'x' not in i: a.remove(i) print(a) Console: 1 3 5 7 x ['2', '4', '6', '8', 'x'] 為什麼只有奇數單位被for 執行到呢? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 172.249.127.149

08/24 11:25, , 1F
因為前面被remove吧
08/24 11:25, 1F

08/24 11:49, , 2F
for 在跑時不要去改被 iterate 的值,不然會有問題
08/24 11:49, 2F

08/24 11:52, , 3F
原PO想做的事可以用 filter() 或 list-comprehension 做
08/24 11:52, 3F

08/24 11:53, , 4F
1. a = filter(lambda x: '/' in x, a)
08/24 11:53, 4F

08/24 11:53, , 5F
2. [i for i in a if '/' in i]
08/24 11:53, 5F

08/24 11:58, , 6F
推樓上
08/24 11:58, 6F

08/24 13:08, , 7F
^ not
08/24 13:08, 7F
文章代碼(AID): #1I62Io6s (Python)
討論串 (同標題文章)
本文引述了以下文章的的內容:
以下文章回應了本文
完整討論串 (本文為第 2 之 6 篇):
文章代碼(AID): #1I62Io6s (Python)