在抓取页面图片时,为避免重复抓取,将抓取的img结果(结果集是list类型的)通过集合去重。这里总结了下网上搜集到的几种方法。

一、方法1

1ids = [1,2,3,3,4,2,3,4,5,6,1]
2news_ids = []
3for id in ids:
4    if id not in news_ids:
5        news_ids.append(id)
6print news_ids

思路看起来比较清晰简单 ,也可以保持之前的排列顺序。

二、方法2

通过set方法进行处理

1ids = [1,4,3,3,4,2,3,4,5,6,1]
2ids = list(set(ids))

处理起来比较简单,使用了集合方法set进行处理,不过结果不会保留之前的顺序。

三、方法3

利用lambda匿名函数和 reduce 函数处理

1ids = [1,4,3,3,4,2,3,4,5,6,1]
2func = lambda x,y:x if y in x else x + [y]
3reduce(func, [[], ] + ids)

四、方法4

使用itertools模块

1import itertools
2ids = [1,4,3,3,4,2,3,4,5,6,1]
3ids.sort()
4it = itertools.groupby(ids)
5for k, g in it:
6    print k