दिलचस्प पोस्ट
एंड्रॉइड में सिग्नलर्स का उपयोग कैसे करें जावा में विशेष वर्णों से बचने के लिए यूआरएल कैसे एन्कोड करें एक संरचना को दूसरे में कॉपी करना प्रोटोटाइप का उपयोग करने के फायदे, कन्स्ट्रक्टर में सीधे तरीकों को परिभाषित करते हैं? WPF में कस्टम बटन टेम्पलेट GROUP BY के साथ MySQL पीवॉट क्वेरी परिणाम मेरे आइटम JFrame में क्यों नहीं दिख रहे हैं? जावा में इंटगर कैश्ड क्यों नहीं हैं? जावास्क्रिप्ट फ़ंक्शन प्रमुख बैंग! वाक्य – विन्यास चेतावनी: mysql_num_rows () पैरामीटर 1 को संसाधन होने की उम्मीद है, बुलियन दिया गया है क्या मैं एक ही तत्व के लिए छद्म तत्वों से पहले एकाधिक हो सकता हूं? मैं mySQL में नोड। Js का उपयोग कर एक बल्क डालने कैसे करूं? क्या मुझे हमेशा आईआईआईमेरेबल <टी> बदले आईआईएलआईटी <टी> की वापसी करना चाहिए? एकाधिक कुंजी के साथ एक नक्शा कैसे कार्यान्वित करें? कैसे मेरे ग्राफ के लिए एक vertex_index संपत्ति प्रदान करें

पायथन में एक "उलट" सूची बनाने का सर्वोत्तम तरीका?

अजगर में, एक नई सूची बनाने का सबसे अच्छा तरीका क्या है, जिसका आइटम कुछ अन्य सूची के समान हैं, लेकिन रिवर्स क्रम में? (मैं जगह में मौजूदा सूची को संशोधित नहीं करना चाहता।)

यहाँ एक समाधान है जो मेरे साथ हुआ है:

new_list = list(reversed(old_list)) 

old_list डुप्लिकेट करना भी संभव है, फिर डुप्लिकेट को जगह में बदल दें:

 new_list = list(old_list) # or `new_list = old_list[:]` new_list.reverse() 

क्या मेरे पास अनदेखा एक बेहतर विकल्प है? यदि नहीं, तो क्या अन्य के ऊपर दिए गए तरीकों में से एक का उपयोग करने के लिए एक आकर्षक कारण (जैसे दक्षता) है?

Solutions Collecting From Web of "पायथन में एक "उलट" सूची बनाने का सर्वोत्तम तरीका?"

 newlist = oldlist[::-1] 

[::-1] टुकड़े टुकड़े करना (जो मेरी पत्नी अन्ना को "मार्टिन स्माइली" कॉल करना पसंद करती है 😉 का अर्थ है: पूरे अनुक्रम को टुकड़े करना, -1 के एक चरण के साथ, अर्थात, रिवर्स में। यह सभी दृश्यों के लिए काम करता है

ध्यान दें कि यह ( और आपके द्वारा उल्लिखित विकल्प) "उथले प्रति" के समतुल्य है, यानी: यदि आइटम अस्थिर हैं और आप उनपर म्यूटेटर कहते हैं, तो मूल सूची में रखे गए वस्तुओं के उत्परिवर्तन भी आइटम में हैं उलट सूची, और इसके विपरीत यदि आपको उस से बचने की जरूरत है, तो एक copy.deepcopy (हमेशा संभावित महंगा ऑपरेशन करते समय), इस मामले में एक। .reverse द्वारा पीछा किया, एकमात्र अच्छा विकल्प है।

अब समय समय पर चलें संकेत: एलेक्स [::-1] सबसे तेज़ है 🙂

 $ p -m timeit "ol = [1, 2, 3]; nl = list(reversed(ol))" 100000 loops, best of 3: 2.34 usec per loop $ p -m timeit "ol = [1, 2, 3]; nl = list(ol); nl.reverse();" 1000000 loops, best of 3: 0.686 usec per loop $ p -m timeit "ol = [1, 2, 3]; nl = ol[::-1];" 1000000 loops, best of 3: 0.569 usec per loop $ p -m timeit "ol = [1, 2, 3]; nl = [i for i in reversed(ol)];" 1000000 loops, best of 3: 1.48 usec per loop $ p -m timeit "ol = [1, 2, 3]*1000; nl = list(reversed(ol))" 10000 loops, best of 3: 44.7 usec per loop $ p -m timeit "ol = [1, 2, 3]*1000; nl = list(ol); nl.reverse();" 10000 loops, best of 3: 27.2 usec per loop $ p -m timeit "ol = [1, 2, 3]*1000; nl = ol[::-1];" 10000 loops, best of 3: 24.3 usec per loop $ p -m timeit "ol = [1, 2, 3]*1000; nl = [i for i in reversed(ol)];" 10000 loops, best of 3: 155 usec per loop 

अद्यतन: निरीक्षक G4dget ने सुझाव दिया सूची कंप विधि जोड़ा गया। मैं परिणाम स्वयं के लिए बात करूंगा

समायोजन

यह sdolan द्वारा टाइमिट गणना के लिए एक बेसलाइन बेंचमार्क / समायोजन प्रदान करने के लायक है जो अक्सर अनावश्यक सूची () रूपांतरण के बिना 'उलट' के प्रदर्शन को दर्शाता है यह सूची () ऑपरेशन रनटाइम में एक अतिरिक्त 26 usecs जोड़ती है और केवल एक इटरेटर अस्वीकार्य होने की स्थिति में आवश्यक है

परिणाम:

 reversed(lst) -- 11.2 uses lst[::-1] --23.6 secs 

गणना:

 # I ran this set of 100000 and came up with 11.2, twice: python -m timeit "ol = [1, 2, 3]*1000; nl = reversed(ol)" 100000 loops, best of 3: 11.2 usec per loop python -m timeit "ol = [1, 2, 3]*1000; nl = reversed(ol)" 100000 loops, best of 3: 11.2 usec per loop # This shows the overhead of list() python -m timeit "ol = [1, 2, 3]*1000; nl = list(reversed(ol))" 10000 loops, best of 3: 37.1 usec per loop # This is the result for reverse via -1 step slices python -m timeit "ol = [1, 2, 3]*1000;nl = ol[::-1]" 10000 loops, best of 3: 23.6 usec per loop 

निष्कर्ष:

इन परीक्षणों के निष्कर्ष को उलट दिया गया है () टुकड़ा से भी तेज है [:: – 1] 12.4 उपयोगकों द्वारा