मैं पाइथन 3.2.3 का उपयोग कर रहा हूं। रिवर्स में एक सूची में फिर से शुरू करने का सबसे तेज़ तरीका क्या है? [:: - 1], उलट, list.reverse() या शायद कुछ और तरीका? मैं लगभग 5e6 तत्वों की सूची से निपट रहा हूं, इसलिए मुझे सूची की प्रतिलिपि बनाने से बचने की ज़रूरत है।जितनी जल्दी संभव हो सके पाइथन सूची में पुन: प्रयास करने की आवश्यकता
उत्तर
>>> from timeit import Timer
>>> t = Timer('[x for x in l[::-1]]', 'l = list(range(100000))')
>>> t.timeit(number=1000)
5.549649953842163
>>> t = Timer('l.reverse(); [x for x in l]', 'l = list(range(100000))')
>>> t.timeit(number=1000)
4.548457145690918
>>> t = Timer('[x for x in reversed(l)]', 'l = list(range(100000))')
>>> t.timeit(number=1000)
4.428632974624634
निष्कर्ष: उलट() 100000 वस्तुओं के साथ सूची में l.reverse() से थोड़ा तेज है। यह निश्चित रूप से और भी सत्य है यदि आप वास्तव में पूरी सूची में लूप नहीं करते हैं, और यदि आप एक से अधिक बार सूची का उपयोग करते हैं तो यह सत्य होने पर रोकता है।
l[::-1]
2.4 से पुराना है जो reversed()
पेश किया गया है।
reversed
सबसे अच्छा होना चाहिए क्योंकि यह एक इटरेटर लौटाता है, इसलिए यह सूची की प्रतिलिपि नहीं करता है, केवल एक ही समय में एक तत्व उत्पन्न करता है। (list.reverse()
भी सूची की कॉपी नहीं होगी, लेकिन यह यह उत्परिवर्तित जाएगा, ताकि सूची पीछे की ओर के बाद आपका काम हो गया हो जाएगा, reversed
जबकि मूल सूची संशोधित नहीं करता है।)
ध्यान दें कि iterators * जरूरी नहीं है * प्रतिलिपि रोकें, यह इस मामले में काम करने के लिए होता है। –
यह सच है, लेकिन आम तौर पर बिल्ट-इन पायथन फ़ंक्शन जो इटरेटर प्रदान करते हैं, पूरी सूची को एक साथ नहीं बनाते हैं; यह उनका पूरा बिंदु है। – BrenBarn
- 1. जितनी जल्दी संभव हो सके बफर की तुलना करें
- 2. CreateFile को जितनी जल्दी हो सके
- 3. जितनी जल्दी हो सके ध्वनि बजाना है?
- 4. विजुअल स्टूडियो के माध्यम से जितनी जल्दी संभव हो सके अलमारियों को
- 5. एक निश्चित समय में जितनी संभव हो सके उतनी सूची की गणना करें
- 6. पेजर ट्रांसफॉर्मर को जितनी जल्दी हो सके पेजरव्यू पर लागू करें
- 7. जितनी कम संभव हो सके कॉन्फ़िगरेशन फ़ाइलों की संख्या कम करें
- 8. क्या एक नियमित अभिव्यक्ति जितनी संभव हो सके मिलती रहती है?
- 9. (अजगर) एक बहुत बड़ा (> 10GB) में लाइनों की गिनती जितनी जल्दी संभव
- 10. फ़ाइलों की सूची में पुन: प्रयास करने के लिए कुशल तरीका
- 11. हमें RuntimeException में प्रयास करने की आवश्यकता क्यों नहीं है?
- 12. AFNetworking: पुन: प्रयास आपरेशन
- 13. पुन: प्रयास करें ग्रूवी
- 14. PHP eval और कैप्चरिंग त्रुटियों (जितना संभव हो सके)
- 15. मुख्य धागे से बाहर होने पर, मैं मुख्य थ्रेड पर जितनी जल्दी हो सके चलाने के लिए कुछ कोड कैसे प्राप्त कर सकता हूं?
- 16. हैंडल मध्यांतर :: पुन: प्रयास करें
- 17. एक स्ट्रिंग को जितना संभव हो सके कुछ palindromes में विभाजित करने के लिए?
- 18. यदि पाइथन की सूची समझ में/अन्यथा?
- 19. आरटीएल का पुन: संकलन - यदि संभव हो तो फिर कैसे?
- 20. एंड्रॉयड - जब बाजार पर अपलोड करने त्रुटि "। सर्वर आपके apk प्रक्रिया नहीं कर सके पुन: प्रयास करें .."
- 21. पाइथन आवृत्तियों के साथ Ngrams की सूची
- 22. सूची लोड किए बिना पाइथन पैकेज निर्भरताओं की सूची?
- 23. एक सी ++ कक्षा पंजीकृत करें ताकि बाद में एक फ़ंक्शन सभी पंजीकृत वर्गों पर पुन: सक्रिय हो सके
- 24. परिवर्तनीय दायरा और पाइथन में प्रयास करें
- 25. एक flyway पुन: प्रयास करें माइग्रेशन
- 26. समझ WCF विश्वसनीय सत्र पुन: प्रयास व्यवहार
- 27. क्या एसक्यूएलएट कॉलम में मानों की सूची सहेजना संभव है?
- 28. क्वार्ट्ज पुन: प्रयास करें जब विफलता
- 29. पाइथन का उपयोग जोड़ों की सूची में कम
- 30. लुसीन इंडेक्स में संग्रहीत दस्तावेज़ों के माध्यम से पुन: प्रयास करना संभव है?
आपको इसे स्वयं परीक्षण करना चाहिए। मैं आपको ['timeit' मॉड्यूल] (http://docs.python.org/library/timeit.html) की जांच करने की सलाह देता हूं। –