更好/更快的是遍历集合还是列表?

10 浏览
0 Comments

更好/更快的是遍历集合还是列表?

如果我有一个包含许多重复项的Python列表,并且我想遍历每个项,但不包括重复项,最好使用一个set(如set(mylist)),还是找另一种方法创建一个没有重复项的列表?我考虑过只是循环遍历列表并检查重复项,但我觉得这就是初始化set()时所做的。

因此,如果mylist = [3,1,5,2,4,4,1,4,2,5,1,3],我真的只想循环遍历[1,2,3,4,5](顺序无关紧要),我应该使用set(mylist)还是其他方法?

在最后一个例子中,还有一种替代方法,因为该列表包含其最小和最大值之间的每个整数,我可以循环遍历range(min(mylist),max(mylist))set(mylist)。在这种情况下,我通常应该避免使用set吗?而且,找到minmax是否比创建set更慢?


在最后一个例子中,使用set更快:

from numpy.random import random_integers
ids = random_integers(1e3,size=1e6)
def set_loop(mylist):
    idlist = []
    for id in set(mylist):
        idlist.append(id)
    return idlist
def list_loop(mylist):
    idlist = []
    for id in range(min(mylist),max(mylist)):
        idlist.append(id)
    return idlist
%timeit set_loop(ids)
#1 loops, best of 3: 232 ms per loop
%timeit list_loop(ids)
#1 loops, best of 3: 408 ms per loop

0