my_list = range(10000)
%timeit pd.Series(my_list).drop_duplicates().tolist()
# 100 loops, best of 3: 3.16 ms per loop
%timeit list(OrderedDict().fromkeys(my_list))
# 100 loops, best of 3: 10.8 ms per loop
%timeit sorted(set(my_list), key=my_list.index)
# 1 loop, best of 3: 716 ms per loop
您可以使用集合来删除重复项,然后恢复顺序。而且跟你原来的一样慢,耶:-)
使用pandas,从列表中创建一个系列,删除重复项,然后将其转换回列表。在
计时
@StefanPochmann的解决方案显然是高重复列表的赢家。在
^{pr2}$对于没有重复的较大列表(例如简单的一系列数字),pandas解决方案非常快速。在
您可以使用
OrderedDict
,但我建议您坚持使用for循环。在重申一下:我认真地建议坚持使用for循环方法,并使用
^{pr2}$set
来跟踪已经看到的项目:如果你只是想搞怪(真的不要这样做):
相关问题 更多 >
编程相关推荐