tl; dr
for first_item in muh_set: break
pozostaje optymalnym podejściem w Pythonie 3.x. Przeklnij cię, Guido.
ty to zrób
Witaj w innym zestawie taktowania Python 3.x, ekstrapolowanym z wr. „S doskonałe Pythona 2.x-swoistych . W przeciwieństwie do równie pomocnej odpowiedzi AChampiona specyficznej dla Python 3.x , poniższe czasy również sugerują rozwiązania odstające od czasu - w tym:
Fragmenty kodu dla Wielkiej Radości
Włącz, nastrój, czas:
from timeit import Timer
stats = [
"for i in range(1000): \n\tfor x in s: \n\t\tbreak",
"for i in range(1000): next(iter(s))",
"for i in range(1000): s.add(s.pop())",
"for i in range(1000): list(s)[0]",
"for i in range(1000): random.sample(s, 1)",
]
for stat in stats:
t = Timer(stat, setup="import random\ns=set(range(100))")
try:
print("Time for %s:\t %f"%(stat, t.timeit(number=1000)))
except:
t.print_exc()
Szybko przestarzałe ponadczasowe czasy
Ujrzeć! Uporządkowane przez najszybsze do najwolniejszych fragmentów:
$ ./test_get.py
Time for for i in range(1000):
for x in s:
break: 0.249871
Time for for i in range(1000): next(iter(s)): 0.526266
Time for for i in range(1000): s.add(s.pop()): 0.658832
Time for for i in range(1000): list(s)[0]: 4.117106
Time for for i in range(1000): random.sample(s, 1): 21.851104
Osłony na twarz dla całej rodziny
Nic dziwnego, że ręczna iteracja pozostaje co najmniej dwa razy szybsza niż następne najszybsze rozwiązanie. Chociaż różnica zmniejszyła się od dni Bad Old Python 2.x (w których manualna iteracja była co najmniej cztery razy szybsza), rozczarowuje mnie fanatyka PEP 20 , że najbardziej szczegółowe rozwiązanie jest najlepsze. Przynajmniej przekształcenie zestawu w listę tylko w celu wyodrębnienia pierwszego elementu zestawu jest tak okropne, jak oczekiwano. Dzięki Guido, niech jego światło nadal nas prowadzi.
Co zaskakujące, rozwiązanie oparte na RNG jest absolutnie okropne. Konwersja list jest zła, ale random
tak naprawdę wymaga okropnego sosu. Tyle o losowym Bogu liczb .
Chciałbym tylko, żeby amorficzni już odkryli set.get_first()
dla nas metodę. Jeśli to czytasz, oni: „Proszę. Zrób coś”.