[問題] not in 檢查list元素會失敗嗎?

作者: ofspring (青春無敵)   2018-12-25 23:41:40
我想做兩個list_A, list_B 元素的確認
然後用 list_A.remove() 移除掉不在list_B
最後的目標是讓list_A, list_B 相同
我的程式碼如下
(python ver 3.6.6, MacOS, 用colab和jupyter notebook跑都是一樣的結果)
作者: Luluemiko (露露)   2018-12-26 00:00:00
因為element被移動了,可是index並沒有跟著動直觀作法就在迴圈前面加一個list的copy(),修改它就好
作者: germun (ger)   2018-12-26 00:39:00
如果元素不重覆用set就好, 除非你只是想試試not in
作者: iphone2003 (307)   2018-12-26 03:34:00
1. not in沒用錯,2.remove也沒錯,問題是出在你正在迭代的list_A會在迴圈中被改變,這個應該要儘量避免不過推樓上,用set應該最方便
作者: yangs0618 (阿彰)   2018-12-26 07:33:00
請問用set是什麼意思 要達到樓主要的功能怎麼用
作者: toy9986619 (幻飄)   2018-12-26 08:59:00
集合(set)
作者: Yshuan (倚絃)   2018-12-26 09:07:00
List known issue 很多語言都有這問題
作者: yangs0618 (阿彰)   2018-12-26 10:47:00
我知道set XD 是不知道怎麼在這個例子上用
作者: XperiaZ6C (真●安卓輕旗艦)   2018-12-26 11:46:00
在list_A.remove(element)之後把list A跟B都print出來就知道問題在哪了
作者: ofspring (青春無敵)   2018-12-26 18:03:00
感謝各位高手的回覆 我用一個新的list就OK了set的解法感覺更優雅了 ~ thanks a lot
作者: iphone2003 (307)   2018-12-27 01:55:00
補個set的作法,取交集就好set(list_A) & set(list_B)

Links booklink

Contact Us: admin [ a t ] ucptt.com