标签:
标题有语病,其实是这样的:
假设有两个列表 : 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)
标签:
原文地址:http://www.cnblogs.com/saaav/p/4705799.html