看板 Python 關於我們 聯絡資訊
各位先進,敝人一直為此簡單問題所困擾,願得高手解惑。 程式如下: node_comb = [(1, 2), (1, 3), (1, 4), (1, 5), (2, 3), (2, 4), (2, 5), (3, 4), (3, 5), (4, 5)] for nd in node_comb: if 1 in nd: node_comb.remove(nd) print(node_comb) 不管怎麼跑,出來的結果就是不對: [(1, 3), (1, 5), (2, 3), (2, 4), (2, 5), (3, 4), (3, 5), (4, 5)] (1, 3) 和 (1, 5) 不該在輸出中! 如果把 tuple 改成 list 結果仍錯,百思不得其解,好像是找到一個符合 條件的tuple就自動跳過下一個,是這樣嗎? -- <)".."(> ( (..) ) im a pig -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 118.167.6.243 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Python/M.1566790998.A.BDB.html
CMJ0121: 蠻常遇到的問題:你心中有一個 index 一開始是 0 08/26 11:46
CMJ0121: 之後 node_comb[0] 被刪掉後 index 變成 1 這時候 08/26 11:47
CMJ0121: 這時候你覺得 node_comb[index] 是誰? 08/26 11:47
明白了,謝謝您!
ckc1ark: 簡單解法是 for nd in node_comb[:]: 不過有更好的方法 08/26 11:48
感謝大大,可以正常運作了
TitanEric: 因為你在iteration過程中增刪list內容 最好如樓上一樣 08/26 12:02
iphone2003: 不要寫這種會在迴圈內對正在迭代的list做新增/刪除元 08/26 12:03
iphone2003: 素的就好了 08/26 12:03
iphone2003: 以這個情況為例,直接[nd for nd in node_comb if 1 i 08/26 12:05
iphone2003: n nd]就好 08/26 12:05
感恩! ※ 編輯: tang1019 (118.167.6.243 臺灣), 08/26/2019 12:12:55 ※ 編輯: tang1019 (118.167.6.243 臺灣), 08/26/2019 12:16:19
XperiaZ6C: Python不建議在for該list時對其做增加與刪除唷 08/26 12:21
waynechen251: 這樣index會亂掉 09/21 23:22