append
एक समय में प्रत्येक आइटम एक है, जो अपनी सुस्ती का कारण है, साथ ही बार-बार समारोह append
करने के लिए कॉल कहते हैं।
हालांकि इस मामले +=
ऑपरेटर नहीं+
के लिए वाक्यात्मक चीनी है में। +=
ऑपरेटर वास्तव में एक नई सूची नहीं बनाता है, फिर इसे वापस असाइन करता है, यह बाएं हाथ के संचालन को जगह में संशोधित करता है। 10,000 बार दोनों का उपयोग करने के लिए timeit
का उपयोग करते समय यह बहुत स्पष्ट है।
>>> timeit.timeit(stmt="l = l + j", setup="l=[1,2,3,4]; j = [5,6,7,8]", number=10000)
0.5794978141784668
>>> timeit.timeit(stmt="l += j", setup="l=[1,2,3,4]; j = [5,6,7,8]", number=10000)
0.0013298988342285156
+=
ज्यादा (500x के बारे में) तेजी से होता है
तुम भी सूचियों के लिए extend
विधि है जो की तरह l.extend(l2)
>>> timeit.timeit(stmt="l.extend(j)", setup="l=[1,2,3,4]; j = [5,6,7,8]", number=10000)
0.0016009807586669922
>>> timeit.timeit(stmt="for e in j: l.append(e)", setup="l=[1,2,3,4]; j = [5,6,7,8]", number=10000)
0.00805807113647461
तार्किक रूप से कुछ के साथ किसी भी iterable (न सिर्फ एक सूची) संलग्न कर सकते हैं संलग्न करने के बराबर, लेकिन आप जितना तेज़ देख सकते हैं उतना तेज़।
तो यह समझाने के लिए: बार-बार दोहराना है तेजी से +
क्योंकि +
एक पूरी नई सूची
extend
यात्रा की तुलना में तेजी है, क्योंकि यह एक builtin सूची विधि है और अनुकूलित किया गया है निर्माण करने के लिए है। तर्कसंगत रूप से बार-बार जोड़ने के बराबर, लेकिन अलग-अलग लागू किया गया।
+=
extend
से तेज़ है क्योंकि यह सूची में संशोधित कर सकता है, यह जानकर कि सूची कितनी बड़ी होनी चाहिए और बार-बार फ़ंक्शन कॉल के बिना।यह मानता है कि आप अपनी सूची को किसी अन्य सूची/tuple
वे बिल्कुल वही नहीं हैं। –
समय के बारे में प्रश्न पूछते समय, यह एक अच्छा विचार है कि आपने इसका समय कैसे दिखाया है: यह दोनों आपकी तुलना के विवरण दिखाता है और दूसरों को एक नज़र डालने पर एक प्रमुख शुरुआत देता है। –
और 'list1.extend (list2) 'के बारे में क्या? – imkost