मैं यह उनके निष्पादन समय से तुलना करने के लिए बेहतर है लगता है ...
a = ['A:1','B:2','C:3','D:4']
def case1():
dc = {}
for i in a:
q, w = i.split(':')
dc[q]=w
def case2():
dict(x.split(":") for x in a)
def case3():
{x.split(":")[0] : x.split(":")[1] for x in a}
%timeit -n 100000 case1()
>> 100000 loops, best of 3: 1.95 us per loop
%timeit -n 100000 case2()
>> 100000 loops, best of 3: 3.05 us per loop
%timeit -n 100000 case3()
>> 100000 loops, best of 3: 3.39 us per loop
100.000
छोरों और प्रत्येक पाश के लिए 3 परीक्षण के लिए परीक्षण किया गया। ; जैसा कि आप देख सकते हैं, सबसे तेज़ निष्पादन समय case1()
से संबंधित है: मानक for loop
।
परिणाम: 1 लाइनर विधियों का यह मतलब नहीं है कि वे तेज़ हैं, वास्तव में, मूल for
लूप आमतौर पर जाने का सबसे तेज़ तरीका है।
अद्यतन: 13312 वस्तुओं की सूची के लिए परिणाम, मूल सूची में 26 आइटम हैं, शेष सूची में उन वस्तुओं की प्रतियां हैं। समय प्रत्येक पाश
%timeit -n 1000 case3()
1000 loops, best of 3: 9.49 ms per loop
%timeit -n 1000 case2()
1000 loops, best of 3: 5.79 ms per loop
%timeit -n 1000 case1()
1000 loops, best of 3: 5.55 ms per loop
अद्यतन 2 के लिए 1000 छोरों की गणना और 3 का सबसे अच्छा है: अंतिम परीक्षण 27262976
कुल मदों की एक सूची के साथ होता है, बुनियादी सूची 26 आइटम नहीं हैं, बाकी उन मदों की प्रतियां हैं सूची में wtihin। समय की गणना प्रत्येक लूप के लिए 10 लूप और 3 में से अधिक की गणना की जाती है (क्योंकि बहुत लंबी सूची के निष्पादन में काफी समय लगता है)।
%timeit -n 10 case1()
10 loops, best of 3: 11.4 s per loop
%timeit -n 10 case2()
10 loops, best of 3: 12.1 s per loop
%timeit -n 10 case3()
10 loops, best of 3: 20.2 s per loop
मेरा मानना है कि वहाँ है कि तुलना में अधिक कुशल कुछ भी नहीं है। याद रखें कि "कम लाइनें" "तेज" जैसी नहीं है। यह सब उबालता है कि भाषा उन पंक्तियों को कैसे फैलती है। – LtWorf
मेरा तुलना उत्तर अद्यतन किया गया है, जो छोटे (4 आइटम), लंबे (13312 आइटम) और बहुत लंबे (27262976 आइटम) सूचियों के लिए संबंधित उत्तरों की तुलना करता है। – FallenAngel