TL; DR
for first_item in muh_set: break
ยังคงเป็นวิธีการที่ดีที่สุดใน Python 3.x สาปแช่งคุณกุย
คุณทำสิ่งนี้
ยินดีต้อนรับสู่การตั้งค่า Python 3.x อีกชุดหนึ่งคาดการณ์จากwr 's ที่ดีหลามตอบสนอง 2.x เฉพาะ ซึ่งแตกต่างจากการตอบสนองเฉพาะ Python 3.xของAChampion ที่มีประโยชน์เท่ากันการกำหนดเวลาด้านล่างนี้ยังมีวิธีแก้ไขปัญหาค่าใช้จ่ายนอกเวลาที่แนะนำข้างต้น - รวมถึง:
list(s)[0]
, จอห์น 's นวนิยายวิธีการแก้ปัญหาตามลำดับ
random.sample(s, 1)
, dF 's ผสมผสานวิธีการแก้ปัญหา RNG ตาม
ตัวอย่างโค้ดสำหรับ Great Joy
เปิดปรับแต่งเวลา:
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()
หมดเวลาการกำหนดเวลาล้าสมัยอย่างรวดเร็ว
ดูเถิด! สั่งโดยสนิปเพตที่ช้าที่สุด:
$ ./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
ภาพใบหน้าสำหรับทั้งครอบครัว
การทำซ้ำแบบแมนวลยังคงเป็นไปอย่างรวดเร็วเป็นสองเท่าของวิธีแก้ปัญหาที่เร็วที่สุดถัดไป แม้ว่าช่องว่างจะลดลงจาก Bad Old Python 2.x วัน (ซึ่งการวนซ้ำแบบแมนวลอย่างน้อย 4 ครั้ง) มันทำให้PEP 20 มีความกระตือรือร้นในตัวฉันมากที่สุด อย่างน้อยการแปลงชุดเป็นรายการเพียงเพื่อแยกองค์ประกอบแรกของชุดนั้นน่ากลัวอย่างที่คาดไว้ ขอบคุณ Guido ขอให้แสงของเขาดำเนินต่อไปเพื่อนำทางเรา
น่าแปลกที่โซลูชันที่ใช้ RNG นั้นน่ากลัวอย่างยิ่ง การแปลงรายการไม่ดี แต่ใช้เค้กซอสอันยิ่งใหญ่random
จริงๆ มากสำหรับRandom Number พระเจ้า
ฉันแค่หวังว่าพวกอสัณฐานพวกเขาจะ PEP set.get_first()
วิธีสำหรับเราแล้ว หากคุณกำลังอ่านสิ่งนี้พวกเขา: "ได้โปรดทำอะไรซักอย่าง"