如果我有一个包含许多重复项的 python 列表,并且我想遍历每个项目,而不是重复项,那么最好使用一个集合(如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 吗?此外,找到min
andmax
会比创建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