Python列表去重

  标题有语病,其实是这样的:

  假设有两个列表 : 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)

 

posted @ 2015-08-05 20:41  draculav  阅读(630)  评论(0编辑  收藏  举报