Python TypeError का समाधान: ‘list’ ऑब्जेक्ट को पूर्णांक के रूप में व्याख्यायित नहीं किया जा सकता
Python की लचीलापन कभी-कभी निराशाजनक TypeError: 'list' object cannot be interpreted as an integer
त्रुटि की ओर ले जाता है। यह त्रुटि आमतौर पर तब होती है जब आप किसी ऐसे संदर्भ में सूची का उपयोग करने का प्रयास करते हैं जहाँ एकल संख्यात्मक मान (एक पूर्णांक) की अपेक्षा की जाती है। यह व्यापक मार्गदर्शिका इस त्रुटि के सामान्य परिदृश्यों का पता लगाएगी और प्रभावी समाधान प्रदान करेगी।
विषय-सूची
- त्रुटि को समझना
- परिदृश्य 1: गलत सूची अनुक्रमण
- परिदृश्य 2: सूचियों के साथ अंकगणितीय संक्रियाएँ
- परिदृश्य 3: गलत फ़ंक्शन तर्क
- परिदृश्य 4: लूप काउंटर के रूप में सूचियों का उपयोग करना
- त्रुटि से बचने के लिए सर्वोत्तम अभ्यास
- निष्कर्ष
त्रुटि को समझना
मुख्य समस्या एक प्रकार का बेमेल है। Python किसी अनुक्रम में स्थिति (सूचकांक) का प्रतिनिधित्व करने के लिए, किसी अंकगणितीय व्यंजक में संख्यात्मक ऑपरेंड के लिए, या किसी फ़ंक्शन कॉल में संख्यात्मक तर्क के लिए एक पूर्णांक की अपेक्षा करता है। जब आप इसके बजाय एक सूची प्रदान करते हैं, तो यह इच्छित ऑपरेशन नहीं कर सकता है, जिससे त्रुटि होती है।
परिदृश्य 1: गलत सूची अनुक्रमण
एक सामान्य गलती किसी अन्य सूची या अनुक्रम से तत्वों तक पहुँचते समय सीधे सूची का उपयोग सूचकांक के रूप में करना है।
गलत:
my_list = [10, 20, 30]
index_list = [0, 1]
value = my_list[index_list] # गलत: index_list एक सूची है, पूर्णांक नहीं
सही:
my_list = [10, 20, 30]
index_list = [0, 1]
values = [my_list[i] for i in index_list] # सही: index_list के माध्यम से पुनरावृति करें और प्रत्येक तत्व को व्यक्तिगत रूप से एक्सेस करें
print(values) # आउटपुट: [10, 20]
परिदृश्य 2: सूचियों के साथ अंकगणितीय संक्रियाएँ
आप सूचियों के साथ सीधे अंकगणितीय संक्रियाएँ (जोड़, घटाव, आदि) नहीं कर सकते।
गलत:
list1 = [1, 2, 3]
list2 = [4, 5, 6]
result = list1 + list2 # यह सूची संयोजन है, तत्व-वार जोड़ नहीं।
सही: तत्व-वार संक्रियाओं के लिए, लूप या सूची समझ का उपयोग करें:
list1 = [1, 2, 3]
list2 = [4, 5, 6]
result = [x + y for x, y in zip(list1, list2)] # तत्व-वार जोड़
print(result) # आउटपुट: [5, 7, 9]
#या numpy का उपयोग करके
import numpy as np
list1 = np.array([1, 2, 3])
list2 = np.array([4, 5, 6])
result = list1 + list2
print(result) # आउटपुट: [5 7 9]
परिदृश्य 3: गलत फ़ंक्शन तर्क
कुछ फ़ंक्शन पूर्णांक तर्कों की अपेक्षा करते हैं। जहाँ पूर्णांक की अपेक्षा की जाती है वहाँ सूची पास करने से यह त्रुटि होगी।
गलत:
def my_function(num):
return num * 2
my_list = [1, 2, 3]
result = my_function(my_list) # गलत: my_function को पूर्णांक की अपेक्षा है
सही:
def my_function(num):
return num * 2
my_list = [1, 2, 3]
results = [my_function(x) for x in my_list] # सही: प्रत्येक तत्व पर फ़ंक्शन लागू करें
print(results) # आउटपुट: [2, 4, 6]
परिदृश्य 4: लूप काउंटर के रूप में सूचियों का उपयोग करना
आपको लूप काउंटर के लिए पूर्णांक या रेंज का उपयोग करना चाहिए। सूचियाँ उपयुक्त नहीं हैं।
गलत:
my_list = [1, 2, 3]
for i in my_list:
print(i) #यह सही है, लेकिन अगला उदाहरण नहीं है।
my_list = [1, 2, 3]
for i in range(len(my_list)):
print(my_list[i]) #यह सही है, लेकिन अगला उदाहरण नहीं है।
my_list = [1, 2, 3]
my_other_list = [4, 5, 6]
for i in my_list:
print(my_other_list[i]) #गलत: सूची का उपयोग सूचकांक के रूप में करना
सही:
my_list = [1, 2, 3]
for i in range(len(my_list)): # सूचकांक-आधारित पहुँच के लिए range(len(my_list)) का उपयोग करें
print(my_list[i])
त्रुटि से बचने के लिए सर्वोत्तम अभ्यास
- हमेशा सुनिश्चित करें कि सूचियों में तत्वों तक पहुँचने के लिए उपयोग किए जाने वाले सूचकांक पूर्णांक हैं।
- सूचियों पर तत्व-वार संक्रियाओं के लिए उपयुक्त विधियों (लूप, सूची समझ, NumPy) का उपयोग करें।
- तर्कों के अपेक्षित डेटा प्रकारों को समझने के लिए फ़ंक्शन सिग्नेचर की सावधानीपूर्वक जाँच करें।
- जब आपको सूचकांक और मान दोनों की आवश्यकता हो तो सूचियों के माध्यम से पुनरावृति करने के लिए range() या enumerate() का उपयोग करें।
निष्कर्ष
TypeError: 'list' object cannot be interpreted as an integer
त्रुटि सूचियों का उपयोग करने से उत्पन्न होती है जहाँ पूर्णांकों की अपेक्षा की जाती है। सामान्य परिदृश्यों को समझकर और सुझाए गए समाधानों और सर्वोत्तम अभ्यासों को लागू करके, आप अपने Python कोड में इस त्रुटि को प्रभावी ढंग से रोक सकते हैं और हल कर सकते हैं।