मेरा प्रश्न पाश के लिए निम्नलिखित के संबंध में है:समझ अजगर
x=[[1,2,3],[4,5,6]]
for v in x:
v=[0,0,0]
यहाँ
अगर आप एक्स आप [] मिल [1,2,3 प्रिंट, [4,5, 6]] .. तो वी बदल गया वास्तव में एक्स में सूची का संदर्भ नहीं है। लेकिन जब आप निम्नलिखित की तरह कुछ करना:
x=[[1,2,3],[4,5,6]]
for v in x:
v[0]=0; v[1]=0; v[2] =0
तो आप एक्स के रूप में मिलता है [[0,0,0], [0,0,0]]। इस थोड़े मुश्किल हो जाता है अगर एक्स के अंदर सूची काफी लंबी है, और कुछ इस तरह भी कर रही है:
x=[[1,2,3],[4,5,6]]
for v in x:
for i in v:
i = 0
मुझे दे देंगे एक्स के रूप में [[1,2,3], [4,5,6]]। मेरी सबसे अच्छी शर्त xrange (0,3) में का उपयोग करना है: v [i] = 0 .. हालांकि मैं अभी भी जानना चाहता हूं कि यहां क्या हो रहा है और जब मेरे पास सूचियों की सूची है तो अन्य विकल्प क्या हैं या अधिक नेस्टेड सूचियां।
की सूची की सूची की सूची तैयार करने में यह एक बेहतर जवाब है' मैं बस आलसी था स्वेन की तुलना में, क्योंकि यह केवल एक नुस्खा को अंधाधुंध करने के बजाय, जो कुछ हो रहा है, उसे समझाने का प्रयास करता है। (कम से कम, मैं अब स्वेन में देखता हूं; शायद वह इसे संपादित करेगा।) –
अब तक स्पष्टीकरण के लिए धन्यवाद। तो, हम सूची तत्व 'v' पाश शरीर में की ओर इशारा करते है उत्परिवर्तित करने के लिए, का उपयोग करते हुए' वी में सक्षम हैं [:] = ... ', क्योंकि इस सूची तत्व ** एक सूची ही ** है। अब, अगर यह सिर्फ एक पूर्णांक या एक सूची से कुछ और हो सकता है - वहाँ पाश हैडर बदले बिना यह उत्परिवर्तित के लिए एक रास्ता है? –
@ जन-फिलिप गेहरके: कुछ प्रकार, जैसे int, अपरिवर्तनीय हैं। यही कारण है कि उस प्रकार कभी नहीं अपने मूल्य बदल सकते हैं का एक उदाहरण है। आम अपरिवर्तनीय प्रकार सांख्यिक प्रकार, स्ट्रिंग्स और tuples हैं। – recursive