मैं हाल ही में पाइथन सीख रहा हूं, और भाषा के साथ कई अभ्यास कर रहा हूं।पायथन में, सूची से पढ़ने की तुलना में सरणी से धीमा क्यों पढ़ रहा है?
एक चीज़ जो मैंने दिलचस्प पाया वह यह है कि, जब मैं एक सरणी से पढ़ता हूं, तो यह सूची के मुकाबले धीमा समय का आधा होता है। क्या किसी को पता है क्यों?
from timeit import Timer import array t = 10000 l = range(t) a = array.array('i', l) def LIST(): for i in xrange(t): l[i] def ARRAY(): for i in xrange(t): a[i] print Timer(LIST).timeit(1000); print Timer(ARRAY).timeit(1000);
उत्पादन होता है:
यहाँ मेरी कोड है
0.813191890717 1.16269612312
जो इंगित करता है कि पढ़ने वालों सूची की तुलना में धीमी है। मुझे लगता है कि सरणी एक निश्चित आकार मेमोरी है, जबकि सूची एक गतिशील संरचना है। तो मुझे लगता है कि सरणी सूची से तेज होगी।
क्या किसी के पास कोई स्पष्टीकरण है?
संभव डुप्ली/उत्तर: http://stackoverflow.com/questions/176011/python-list-vs-array-when-to-use - मूल रूप से array.array एक सी सरणी के चारों ओर एक रैपर है, इसलिए मुझे लगता है कि वहां है इसे एक्सेस करते समय ओवरहेड। गणित के लिए इसका इस्तेमाल न करें। –
दूसरी अनुमान लगाने की कोशिश कर पाइथन क्षमता - खासकर सी-जैसी पृष्ठभूमि से आने वाले लोगों के लिए - अक्सर काउंटर-सहज ज्ञान युक्त होता है। कोड स्पष्ट रूप से पहले, फिर यदि आप प्रदर्शन समस्या को मापते हैं तो अनुकूलित करें; यह सी पर भी लागू होता है, लेकिन क्योंकि भाषा तत्व मशीन के बहुत करीब हैं, लोग अक्सर भूल जाते हैं। – msw
गणित के लिए आप numpy (अभी तक पायथन 3 के लिए उपलब्ध नहीं) का उपयोग करना चाह सकते हैं, केवल भगवान जानता है कि क्यों numpy मानक पुस्तकालय नहीं है। –