tl; dr
for first_item in muh_set: break
vẫn là cách tiếp cận tối ưu trong Python 3.x. Nguyền rủa bạn, Guido.
bạn làm điều này
Chào mừng bạn đến với một bộ thời gian Python 3.x khác, ngoại suy từ wr. là tuyệt vời Python 2.x phản ứng cụ thể . Không giống như phản hồi dành riêng cho Python 3.x của AChampion , các thời gian bên dưới cũng có các giải pháp ngoại lệ được đề xuất ở trên - bao gồm:
Đoạn mã cho niềm vui lớn
Bật, điều chỉnh, thời gian nó:
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()
Nhanh chóng lỗi thời vượt thời gian
Hãy chứng kiến! Được sắp xếp theo đoạn nhanh nhất đến chậm nhất:
$ ./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
Khẩu trang cho cả gia đình
Không có gì đáng ngạc nhiên, việc lặp lại thủ công vẫn nhanh nhất ít nhất gấp đôi so với giải pháp nhanh nhất tiếp theo. Mặc dù khoảng cách đã giảm từ Bad Old Python 2.x ngày (trong đó việc lặp lại thủ công nhanh nhất ít nhất bốn lần), nhưng điều đó làm tôi thất vọng với PEP 20 zealot trong tôi rằng giải pháp dài dòng nhất là tốt nhất. Ít nhất là chuyển đổi một tập hợp thành một danh sách chỉ để trích xuất phần tử đầu tiên của tập hợp là khủng khiếp như mong đợi. Cảm ơn Guido, có thể ánh sáng của anh ấy tiếp tục hướng dẫn chúng tôi.
Đáng ngạc nhiên, giải pháp dựa trên RNG là hoàn toàn khủng khiếp. Chuyển đổi danh sách là xấu, nhưng random
thực sự mất bánh nước sốt khủng khiếp. Quá nhiều cho Thiên Chúa số ngẫu nhiên .
Tôi chỉ muốn những người vô định hình họ sẽ đưa ra một set.get_first()
phương pháp cho chúng tôi. Nếu bạn đang đọc cái này, họ: "Làm ơn. Làm gì đi."