[问题] 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