标题有语病,其实是这样的:
假设有两个列表 : L1 = [1,2,3,4] ; L2 = [1,2,5,6] 然后去掉L1中包含的L2的元素
直接这样当然是不行的:
def removeExists(L1, L2):
for e1 in L1:
if e1 in L2:
L1.remove(e1)
不管什么语言都不能这么干,但是又有一点不同,它不报错而且还能往下走,只不过结果不合预期。
结果是这样的,因为L1中的1移除后,迭代器索引指向了第二个元素,但是现在第二个元素是3了,所以L1的结果会是[2,3,4],如果L1原本是[1,2,4,5],结果就是[2,4],这个挺有意思。。。
解决方法倒是无所谓,顺手贴一下:
def removeExists(L1, L2):
L1T = L1[:]
for e1 in L1T:
if e1 in L2:
L1.remove(e1)