[[]] के साथ सूची आरंभीकरण में सूची लिंकिंग समस्या * n
[[]] का उपयोग करके सूचियों की सूची आरंभ करते समय n, प्रोग्रामर को अक्सर एक अप्रत्याशित समस्या का सामना करना पड़ता है जहां सूचियां एक साथ जुड़ी हुई प्रतीत होती हैं। ऐसा इसलिए होता है क्योंकि [x]n सिंटैक्स अलग-अलग सूची उदाहरण बनाने के बजाय एक ही अंतर्निहित सूची ऑब्जेक्ट के लिए कई संदर्भ बनाता है।
समस्या को स्पष्ट करने के लिए, निम्नलिखित कोड पर विचार करें:
x = [[]] * 3 x[1].append(0) print(x)
इस कोड का आउटपुट है:
[[0], [0], [0]]
अपेक्षित आउटपुट के बजाय:
[[], [0], []]
समस्या इस तथ्य से उत्पन्न होती है कि सूची में प्रत्येक तत्व एक ही सूची ऑब्जेक्ट का संदर्भ है। जब किसी एक तत्व को संशोधित किया जाता है, तो अन्य सभी तत्व प्रभावित होते हैं।
वास्तव में विशिष्ट सूचियों की सूची बनाने के लिए, सूची समझ का उपयोग करना सही तरीका है:
x = [[] for i in range(3)]
यह सिंटैक्स सूची में प्रत्येक तत्व के लिए एक नई सूची ऑब्जेक्ट बनाता है, यह सुनिश्चित करते हुए कि वे स्वतंत्र हैं।
निम्नलिखित कोड एक प्रदर्शन के रूप में कार्य करता है:
In [20]: x = [[]] * 4
In [21]: [id(i) for i in x]
Out[21]: [164363948, 164363948, 164363948, 164363948] # same id()'s for each list,i.e same object
In [22]: x=[[] for i in range(4)]
In [23]: [id(i) for i in x]
Out[23]: [164382060, 164364140, 164363628, 164381292] #different id(), i.e unique objects this time
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3