Zakodowałem problem Eulera i wpadłem w wątpliwość, która wywołała moją ciekawość. Mam dwa fragmenty kodu. Jednym z nich jest lista innych słowników używających.Słownik Pythona kontra lista, która jest szybsza?
Używanie list:
n=100000
num=[]
suma=0
for i in range(n,1,-1):
tmp=tuple(set([n for n in factors(i)]))
if len(tmp) != 2: continue
if tmp not in num:
num.append(tmp)
suma+=i
wykorzystujące słowniki:
n=100000
num={}
suma=0
for i in range(n,1,-1):
tmp=tuple(set([n for n in factors(i)]))
if len(tmp) != 2: continue
if tmp not in num:
num[tmp]=i
suma+=i
Obawiam się tylko o wydajność. Dlaczego drugi przykład użycia słowników działa niesamowicie szybko, szybciej niż pierwszy przykład z listami. przykład ze słownikami działa prawie trzydzieści razy szybciej!
Przetestowałem te 2 kody za pomocą n = 1000000, a pierwszy kod uruchomiono w 1032 sekundy, a drugi w 3,3 sekundy "amazin"!
Wklej kod bezpośrednio z IDE, zaznacz je wszystkie i naciśnij Ctrl + K – Cody
@Cody problem nie był z wcięciem ale z tym, że umieszczał bloki kodu wewnątrz list. Poprawiłem formatowanie w oczekiwaniu na edycję. – Tagc
@Tagc Nie widziałem kodu, więc po prostu zgadywałem. To dobre ustalenie. – Cody