tl; डॉ
for first_item in muh_set: break
अजगर 3.x में इष्टतम दृष्टिकोण बना हुआ है। शुक्रिया, गुइडो।
यू ऐसा करो
Python 3.x समय के एक और सेट में आपका स्वागत है, जो कि wr से अलग है। उत्कृष्ट पायथन 2.x- विशिष्ट प्रतिक्रिया । AChampion के समान रूप से सहायक पायथन 3.x- विशिष्ट प्रतिक्रिया के विपरीत , नीचे दिए गए समय समाधानों को भी समय-समय पर ऊपर सुझाया गया है -
ग्रेट जॉय के लिए कोड स्निपेट
इसे चालू करें, इसमें समय दें:
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
पूरे परिवार के लिए फेसप्लंट्स
अप्रत्याशित रूप से, मैन्युअल पुनरावृत्ति अगले सबसे तेज समाधान के रूप में कम से कम दो बार तेज रहती है। हालाँकि यह बैड ओल्ड पायथन 2.x दिनों (जिसमें मैन्युअल पुनरावृत्ति कम से कम चार बार तेज थी) से अंतराल कम हो गया है, यह मेरे में PEP 20 जोल को निराश करता है कि सबसे क्रिया समाधान सबसे अच्छा है। कम से कम सेट के पहले तत्व को निकालने के लिए एक सूची में एक सेट को परिवर्तित करना अपेक्षा के अनुसार भयानक है। गुइडो का शुक्रिया, हो सकता है कि उनका प्रकाश हमारा मार्गदर्शन करता रहे।
हैरानी की बात है, आरएनजी आधारित समाधान बिल्कुल भयानक है। सूची रूपांतरण बुरा है, लेकिन random
वास्तव में भयानक सॉस केक लेता है। रैंडम नंबर भगवान के लिए इतना ।
मैं सिर्फ यह जानना चाहता हूं कि वे set.get_first()
हमारे लिए पहले से ही एक विधि तैयार करेंगे। यदि आप इसे पढ़ रहे हैं, तो वे कहते हैं: "कृपया। कुछ करें।"