tl; dr
for first_item in muh_set: break
tetap menjadi pendekatan optimal dalam Python 3.x. Terkutuklah kamu, Guido.
kamu melakukan ini
Selamat datang di rangkaian Python 3.x lainnya, diekstrapolasi dari wr. Ini sangat baik Python respon 2.x-spesifik . Tidak seperti AChampion yang juga sangat membantu Python 3.x respon spesifik , timing di bawah ini juga time outlier solution yang disarankan di atas - termasuk:
Cuplikan Kode untuk Kegembiraan Besar
Aktifkan, dengar, atur waktu:
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()
Pengaturan waktu abadi cepat
Melihat! Dipesan oleh snippet tercepat hingga paling lambat:
$ ./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
Faceplants untuk Seluruh Keluarga
Tidak mengherankan, iterasi manual tetap setidaknya dua kali lebih cepat dari solusi tercepat berikutnya. Meskipun kesenjangan telah berkurang dari Bad Old Python 2.x hari (di mana iterasi manual setidaknya empat kali lebih cepat), mengecewakan PEP 20 fanatik pada saya bahwa solusi yang paling bertele-tele adalah yang terbaik. Setidaknya mengubah set ke daftar hanya untuk mengekstrak elemen pertama set sama mengerikan seperti yang diharapkan. Terima kasih Guido, semoga cahayanya terus membimbing kita.
Anehnya, solusi berbasis RNG benar-benar mengerikan. Konversi daftar buruk, tetapi random
benar - benar memakan kue saus yang enak. Begitu banyak untuk Dewa Angka Acak .
Saya hanya berharap yang amorf. Mereka akan menggunakan set.get_first()
metode untuk kita. Jika Anda membaca ini, Mereka: "Tolong. Lakukan sesuatu."