TypeError: can only concatenate list (not "int") to list
लिस्ट्स को अन्य लिस्ट्स के साथ जोड़ा जा सकता है। इसका मतलब है कि आप एक लिस्ट के कंटेंट को दूसरी लिस्ट में जोड़ सकते हैं। अन्य डेटा टाइप्स वाले मान, जैसे इंटीजर्स, को लिस्ट के साथ नहीं जोड़ा जा सकता।
यदि आप किसी इंटीजर को लिस्ट के साथ जोड़ने का प्रयास करते हैं, तो पायथन इंटरप्रेटर "TypeError: can only concatenate list (not "int") to list" एरर रिटर्न करता है।
इस गाइड में, हम बात करते हैं कि इस एरर का क्या मतलब है और यह कैसे काम करती है। हम एक उदाहरण के माध्यम से चलते हैं ताकि आप अपने कोड में इस समस्या को ठीक करने में नेविगेट कर सकें।
उदाहरण परिदृश्य
हम एक प्रोग्राम बनाने जा रहे हैं जो ट्रैक करता है कि शुक्रवार को कैफे में विशेष सैंडविच के लिए कितने ऑर्डर दिए गए हैं। हम उन सभी सैंडविच को फ़िल्टर करना चाहते हैं जिन्हें 75 से अधिक बार ऑर्डर किया गया है ताकि हम देख सकें कि कौन से सैंडविच सबसे लोकप्रिय हैं।
हम दो लिस्ट्स को परिभाषित करके शुरू करते हैं: सैंडविच की एक लिस्ट और एक लिस्ट जिसमें प्रत्येक सैंडविच के लिए दिए गए ऑर्डर्स की संख्या है।
sandwiches = ["Egg and Cress", "Chicken Club", "Hummus and Tomato", "Cheese"] orders = [54, 77, 22, 98]
हमारी लिस्ट्स "sandwiches" और "orders" वेरिएबल्स को असाइन की जाती हैं। अगला, हम एक लिस्ट परिभाषित करते हैं जो उन सैंडविच के इंडेक्स नंबर्स को ट्रैक करती है जिन्हें 75 से अधिक बार ऑर्डर किया गया है।
orders_75 = []
फिलहाल, ये लिस्ट्स खाली हैं। ऐसा इसलिए है क्योंकि हमने अभी तक यह पता नहीं लगाया है कि किन सैंडविच को 75 से अधिक बार ऑर्डर किया गया है।
अगला, हम अपने सैंडविच और ऑर्डर्स की लिस्ट्स पर इटरेट करते हैं ताकि पता लगा सकें कि किन सैंडविच को 75 से अधिक बार ऑर्डर किया गया है। हम इसे फोर लूप का उपयोग करके कर सकते हैं:
for s in range(0, len(sandwiches)):
if orders[s] > 75:
orders_75 = orders_75 + s
हमारा कोड 0 और "sandwiches" लिस्ट की लंबाई की रेंज में प्रत्येक नंबर के माध्यम से लूप करता है। यदि "orders" लिस्ट में किसी सैंडविच के लिए संबंधित मान 75 से अधिक है, तो हम उस सैंडविच की इंडेक्स पोजीशन को "orders_75" लिस्ट में जोड़ते हैं।
अगला, हम एक फोर लूप लिखते हैं जो कंसोल पर प्रिंट करता है कि किन सैंडविच को 75 से अधिक बार ऑर्डर किया गया है ताकि चेक कर सकें कि हमारा प्रोग्राम काम करता है:
for o in orders_75:
print(sandwiches[o])
आइए अपना पायथन कोड चलाएं और देखें क्या होता है:
Traceback (most recent call last): File "main.py", line 9, inorders_75 = orders_75 + s TypeError: can only concatenate list (not "int") to list
हमारा कोड एरर रिटर्न करता है।
समाधान
हमारे एरर मैसेज में उल्लिखित कोड लाइन पर एक नज़र डालें:
orders_75 = orders_75 + s
हम अपनी लिस्ट में एक इंटीजर मान को जोड़ने का प्रयास कर रहे हैं। हम ऐसा नहीं कर सकते क्योंकि कन्केटनेशन केवल उसी डेटा टाइप के इटरेबल ऑब्जेक्ट्स पर काम करता है।
इस एरर को हल करने के लिए, हमें अपनी लिस्ट में आइटम जोड़ने के लिए append() मेथड का उपयोग करना होगा। यह मेथड विशेष रूप से लिस्ट्स में आइटम जोड़ने के लिए डिज़ाइन किया गया है। आइटम किसी भी डेटा टाइप के हो सकते हैं, जैसे डिक्शनरीज़, इंटीजर्स, या फ्लोटिंग-पॉइंट नंबर्स।
हमारे orders_75 कोड लाइन को append() मेथड का उपयोग करने के लिए बदलें:
orders_75.append(s)
हमें "orders_75" को कोई मान असाइन करने की आवश्यकता नहीं है क्योंकि append() मेथड इन-प्लेस लिस्ट में आइटम जोड़ता है। आइए अपना कोड एक्जीक्यूट करें:
Chicken Club Cheese
हमारा कोड उन सैंडविच की लिस्ट प्रिंट करता है जिन्हें 75 से अधिक बार ऑर्डर किया गया है। दो सैंडविच हैं जो इस मानदंड को पूरा करते हैं: Chicken Club और Cheese।
निष्कर्ष
"TypeError: can only concatenate list (not "int") to list" एरर तब आती है जब आप किसी इंटीजर को लिस्ट के साथ जोड़ने का प्रयास करते हैं।
यह एरर इसलिए आती है क्योंकि केवल लिस्ट्स को लिस्ट्स के साथ जोड़ा जा सकता है। इस एरर को हल करने के लिए, लिस्ट में आइटम जोड़ने के लिए append() मेथड का उपयोग करें।
अब आप इस पायथन एरर को एक प्रोफेशनल की तरह हल करने के लिए तैयार हैं!