संदर्भ द्वारा संग्रहीत पायथन में सूचीबद्ध है।
इसका मतलब यह है कि जब आप list2 = list1
करते हैं, आप सूची की एक प्रति नहीं कर रहे हैं - आप केवल कह रहे हैं "list2
एक ही बात list1
करता है को संदर्भित करता है," अर्थात्, सूची आप मूल रूप से बनाया है जब आप list1 = []
किया था।
अजगर को निर्दिष्ट +=
मतलब करने के लिए सूचियों के लिए "जगह में संलग्न", क्योंकि समय है जब आप सूची में +=
उपयोग कर रहे हैं के अधिकांश, कि क्या आप क्या करना चाहते है - आप आमतौर पर हर एक नई सूची बनाने के लिए नहीं करना चाहते हैं समय आप एक तत्व जोड़ते हैं।
इस प्रकार, जब आप list2
को संलग्न ", एक ही वस्तु list1
करता है को संदर्भित करता है" जो है, और फिर list1
से पढ़ा, तो आप संलग्न आइटम देखते हैं, के रूप में की उम्मीद है के बाद से उन दोनों को एक ही सूची में इशारा करते हैं।
+
के साथ, तथापि, एक नई सूची हमेशा बनाई गई है, क्योंकि यह मतलब नहीं है जगह में ऑपरेंड के या तो संशोधित करने के लिए (के बाद से a+b
a
या b
के संशोधन संकेत नहीं करता है)।
इसलिए, जब आप list2 = list2 + [1]
करते हैं, आप एक नई सूची है कि मूल ऑब्जेक्ट की सामग्री के सभी list2
और भी 1
द्वारा की ओर इशारा किया बनाते हैं और फिर कहते हैं कि list2
अब संदर्भ नई सूची। चूंकि यह अब list1
की तुलना में एक अलग सूची का संदर्भ देता है, जब आप list1
से पढ़ने के लिए जाते हैं, तो भी आप अतिरिक्त 1
के बिना मूल सूची देखते हैं।
दिलचस्प का उपयोग करके सूची तत्व-दर-तत्व (
list2 = [i for in list1]
) या कॉपी कर सकते हैं। शायद क्योंकि 'list2 = list2 + [1] 'में,' list2 + [1] 'एक नई सूची बनाता है, जिसे तब' list2' को असाइन किया जाता है। मुझे लगता है कि यह उन "quirks" में से एक है जो pythonista के लिए उपयोग किया जाता है। हालांकि यह एक शुरुआत के लिए भ्रमित है। – Zabba@MartijnPieters: मुझे लगता है कि सवाल थोड़ा अलग है .. मैं यहां डिजाइन के कारण से पूछ रहा हूं (क्योंकि यह उसी ऑपरेटर के उदाहरण के मुकाबले आईएमएचओ थोड़ा अजीब है उदाहरण के लिए स्कैला और रूबी में) और दूसरा सवाल क्या हो रहा है "क्या हो रहा है?"। – mkorpela
प्रेरणा के लिए [मूल पीईपी (पायथन संवर्द्धन प्रस्ताव] (http://www.python.org/dev/peps/pep-0203/) देखें। * इस सुविधा को पायथन में जोड़ने के दो मुख्य कारण हैं: सादगी अभिव्यक्ति, और इन-प्लेस ऑपरेशंस के लिए समर्थन। अंतिम परिणाम वाक्यविन्यास की सादगी और अभिव्यक्ति की सादगी के बीच एक व्यापार है; अधिकांश नई सुविधाओं की तरह, संवर्धित असाइनमेंट पहले से असंभव कुछ भी नहीं जोड़ता है। यह केवल इन चीजों को आसान बनाता है । * –