列表去重是Python中一种常见的处理方式,任何编程场景都可能会遇到需要列表去重的情况。
列表去重的方式有很多,本文将一一讲解他们,并进行性能的对比。
让我们先制造一些简单的数据,生成0到99的100万个随机数:
from random import randrange
DUPLICATES = [randrange(100) for _ in range(1000000)]
接下来尝试这4种去重方式中最简单直观的方法:
1.新建一个数组,遍历原数组,如果值不在新数组里便加入到新数组中。
# 第一种方式
def easy_way():
unique = []
for element in DUPLICATES:
if element not in unique:
unique.append(element)
return unique
进入ipython使用timeit计算其去重耗时:
%timeit easy_way()
# 1.16 s ± 137 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)
平均耗时在1.16秒左右,但是在这个例子中我们使用了数组作为存储对象,实际上如果我们改成集合存储去重后的结果,性能会快不少:
def easy_way():
unique = set()
for element in DUPLICATES:
if element not in u