重複が多い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
、max
単に作成するよりも遅くなり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