मुझे यकीन है कि इसका उत्तर कहीं दिया गया है लेकिन मुझे यकीन नहीं था कि इसका वर्णन कैसे किया जाए।गुणा (*) अप्रत्याशित व्यवहार का उपयोग करते हुए उपन्यास उत्पन्न करना
lst = [[], [], []]
मैंने सोचा कि मैं ऐसा करने से सभी चतुर किया जा रहा था:
चलो कहते हैं कि मैं, 3 खाली सूचियों ऐसी सूची बनाएं जिसमें इतने की तरह करना चाहते हैं
lst = [[]] * 3
लेकिन मुझे पता चला के बाद, कुछ अजीब व्यवहार को डीबग करना, इसने की बजाय [[3], [3], [3]]
बनाने के लिए, संपूर्ण सूची को अपडेट करने के लिए lst[0].append(3)
कहें, एक सुस्तवादी को अद्यतन जोड़ना पड़ा।
हालांकि, अगर मैं
lst = [[] for i in range(3)]
तो lst[1].append(5)
कर के साथ इस सूची को प्रारंभ की उम्मीद देता [[], [5], []]
मेरा प्रश्न क्यों होता है है? यह ध्यान रखें कि अगर मैं
lst = [[]]*3
lst[0] = [5]
lst[0].append(3)
करना तो सेल 0 की 'लिंकेज' टूट गया है और मैं [[5,3],[],[]]
मिलता है, लेकिन अभी भी lst[1].append(0)
[[5,3],[0],[0]
का कारण बनता है दिलचस्प है।
मेरा सबसे अच्छा अनुमान यह है कि फॉर्म [[]]*x
में गुणा का उपयोग करके पाइथन को एक सेल के संदर्भ को संग्रहीत करने का कारण बनता है ...?
@RoadieRich लेकिन यहां के उत्तरों में आधिकारिक दस्तावेज़ीकरण के लिए बेहतर स्पष्टीकरण और लिंक हैं। –
@ असीमबंसल: फिर उन उत्तरों को * अन्य * प्रश्न में शायद जोड़ा जाना चाहिए? –
यह निश्चित रूप से एक डुप्लिकेट है। http://stackoverflow.com/questions/240178/unexpected-feature-in-a-python-list-of-lists और http://stackoverflow.com/questions/1605024/python-using-the-multiply-operator- टू-क्रू-ऑफ-ऑब्जेक्ट-इन-सूचियां और http://stackoverflow.com/questions/6688223/python-list-multiplication-3-makes-3-lists-which-mirror-each-other- कब? lq = 1 और अन्य मुझे अभी नहीं मिल रहा है। –