TypeError: list indices must be integers or slices, not list
पाइथन प्रोग्रामिंग में एक सामान्य समस्या है, जो नौसिखिए और अनुभवी डेवलपर्स दोनों को परेशान करती है। यह त्रुटि तब आती है जब आप पूर्णांक इंडेक्स (या स्लाइस, जो पूर्णांकों की श्रेणी का प्रतिनिधित्व करता है) के अलावा किसी अन्य चीज़ का उपयोग करके सूची के तत्व तक पहुँचने का प्रयास करते हैं। यह गाइड इस त्रुटि के मूल कारणों का विश्लेषण करेगी और व्यावहारिक समाधान प्रदान करेगी।
विषय सूची
त्रुटि को समझना
पाइथन सूचियाँ क्रमित संग्रह हैं। अलग-अलग तत्वों तक पहुँचने के लिए उनके सूचकांक की आवश्यकता होती है, जो 0 से शुरू होते हैं। उदाहरण के लिए, my_list = [10, 20, 30]
में, my_list[0]
10 देता है, my_list[1]
20 देता है, और इसी तरह। TypeError
यह दर्शाता है कि आपने सूचकांक के रूप में एक गैर-पूर्णांक (या गैर-स्लाइस) मान का उपयोग किया है, जैसे कि सूची, टुपल, स्ट्रिंग, या अन्य डेटा प्रकार।
सामान्य कारण और समाधान
1. सन्निहित सूचियों के साथ गलत अनुक्रमण
यह एक प्रचलित परिदृश्य है। विचार करें:
my_list = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
print(my_list[0]) # आउटपुट: [1, 2, 3] - सही
print(my_list[[0,1]]) # TypeError! गलत
print(my_list[0][1]) # आउटपुट: 2 - सन्निहित तत्व तक सही पहुँच
my_list[[0,1]]
गलत तरीके से [0,1]
को सूचकांक के रूप में उपयोग करता है। क्रमिक रूप से सन्निहित तत्वों तक पहुँचें: my_list[0][1]
सूचकांक 0 पर स्थित सूची के भीतर सूचकांक 1 पर तत्व को सही ढंग से पुनः प्राप्त करता है।
2. सूचकांक के रूप में सूचियाँ रखने वाले चरों का उपयोग करना
my_list = [10, 20, 30]
index = [1] # index एक सूची है!
print(my_list[index]) # TypeError!
यहाँ, index
में एक सूची है, जिसे गलत तरीके से सूचकांक के रूप में उपयोग किया गया है। सुनिश्चित करें कि आपके इंडेक्स वेरिएबल में एक पूर्णांक है:
my_list = [10, 20, 30]
index = 1
print(my_list[index]) # आउटपुट: 20 - सही
3. गलत चर प्रकार
कोई भी गैर-पूर्णांक सूचकांक (स्ट्रिंग्स, फ्लोट्स, आदि) इस त्रुटि का कारण बनेंगे।
my_list = [10, 20, 30]
print(my_list["0"]) # TypeError! (स्ट्रिंग इंडेक्स)
print(my_list[1.0]) # TypeError! (फ्लोट इंडेक्स)
4. ऑफ-बाय-वन त्रुटियाँ
सूची सूचकांक 0 से शुरू होते हैं। सूची की लंबाई से परे पहुँचने पर IndexError
उत्पन्न होता है; अनुमत सीमा के बाहर ऋणात्मक सूचकांक भी त्रुटियाँ उत्पन्न करते हैं। हमेशा अपने अनुक्रमण तर्क की दोबारा जाँच करें।
डीबगिंग रणनीतियाँ
- अपने सूचकांक प्रिंट करें: सूचकांक का उपयोग करने से पहले, यह पुष्टि करने के लिए कि यह एक पूर्णांक है, इसका मान प्रिंट करें।
- डीबगर का उपयोग करें: त्रुटि के स्रोत का पता लगाने के लिए, पंक्ति दर पंक्ति अपने कोड के माध्यम से चरण-दर-चरण जाँच करें, चर मानों का निरीक्षण करें।
- सन्निहित सूचियों की जाँच करें: ध्यान से देखें कि आप सन्निहित सूचियों में तत्वों तक कैसे पहुँचते हैं।
इन कारणों को समझकर और अपने कोड के अनुक्रमण की सावधानीपूर्वक समीक्षा करके, आप इस सामान्य पाइथन समस्या को प्रभावी ढंग से हल कर सकते हैं। सूची तत्वों तक पहुँचते समय हमेशा पूर्णांकों (या स्लाइस) का उपयोग करें।