如测试代码,并没有将li、li_ 的交集查询出来
li=[1,2,3,4,5] li_=[2,5,6,7,9] for i in li_: if i in li: li_.remove(i) print li_ # 输出 [5, 6, 7, 9]
原因
for 遍历列表时记录的是元素的索引位置,如i=2符合条件,此时li 列表会将2元素删除,则5元素的下标就变成了0,而此时for记录的是遍历下标为1的元素,所以就跳过了5
所以要避免在遍历中对列表变更
最简单的解决方法是将符合条件的元素追加到新列表中,如
new=[] li=[1,2,3,4,5] li_=[2,5,6,7,9] for i in li_: if i in li: new.append(i) print new #输出结果是:[2, 5]