কম্পিউটার টিউটোরিয়াল

পাইথন TypeError: can only concatenate list (not “int”) to list সমাধান

লিস্ট অন্য লিস্টের সাথে কনক্যাটেনেট করা যায়। এর মানে আপনি একটি লিস্টের কন্টেন্ট অন্য লিস্টে যোগ করতে পারেন। অন্যান্য ডেটা টাইপের ভ্যালু, যেমন ইন্টিজার, লিস্টের সাথে কনক্যাটেনেট করা যায় না।

আপনি যদি একটি ইন্টিজার লিস্টের সাথে কনক্যাটেনেট করার চেষ্টা করেন, পাইথন ইন্টারপ্রেটার "TypeError: can only concatenate list (not "int") to list" এরর রিটার্ন করে।

এই গাইডে, আমরা এই এরর কী বোঝায় এবং কীভাবে কাজ করে তা আলোচনা করব। আমরা একটি উদাহরণ দিয়ে ওয়াকথ্রু করব যাতে আপনি আপনার কোডে এই ইস্যু ফিক্স করতে পারেন।

TypeError: can only concatenate list (not "int") to list

কনক্যাটেনেশন দুটি লিস্ট একসাথে যোগ করা সহজ করে তোলে। আপনি extend() মেথড ব্যবহার করে একটি লিস্ট অন্য লিস্টে যোগ করতে পারেন, কিন্তু কনক্যাটেনেশন শুধু একটি সিম্বল ব্যবহার করে: প্লাস সাইন (+)।

লিস্ট একমাত্র অবজেক্ট নয় যেটি কনক্যাটেনেট করা যায়। যেকোনো ইটারেবল অবজেক্ট, যেমন ডিকশনারি বা টাপল, কনক্যাটেনেট করা যায়।

বিভিন্ন ডেটা টাইপের দুটি অবজেক্ট কনক্যাটেনেট করা যায় না। এর মানে আপনি একটি লিস্ট ডিকশনারির সাথে কনক্যাটেনেট করতে পারবেন না, অথবা একটি ইন্টিজার লিস্টের সাথে।

আপনি "TypeError: can only concatenate list (not "int") to list" সম্মুখীন হন যদি আপনি কনক্যাটেনেশন ব্যবহার করে একটি সিঙ্গেল ইন্টিজার আইটেম লিস্টে যোগ করার চেষ্টা করেন।

একটি উদাহরণ সিনেরিও

আমরা একটি প্রোগ্রাম বানাব যা ট্র্যাক করে একটি ক্যাফেতে শুক্রবারে নির্দিষ্ট স্যান্ডউইচের কত অর্ডার প্লেস হয়েছে। আমরা ৭৫-এর বেশি অর্ডার হওয়া সকল স্যান্ডউইচ ফিল্টার আউট করব যাতে বুঝতে পারি কন স্যান্ডউইচগুলো সবচেয়ে পপুলার।

আমরা দুটি লিস্ট ডিফাইন করি: একটি স্যান্ডউইচের লিস্ট এবং অন্যটি প্রতিটি স্যান্ডউইচের জন্য কত অর্ডার প্লেস হয়েছে সেটি ধারণকারী লিস্ট।

sandwiches = ["Egg and Cress", "Chicken Club", "Hummus and Tomato", "Cheese"]
orders = [54, 77, 22, 98]

আমাদের লিস্টগুলো "sandwiches" এবং "orders" ভ্যারিয়েবলে অ্যাসাইন করা হয়েছে। এরপর, আমরা একটি লিস্ট ডিফাইন করি যা ৭৫-এর বেশি অর্ডার হওয়া স্যান্ডউইচের ইনডেক্স নম্বর ট্র্যাক করবে।

orders_75 = []

এই মুহূর্তে, এই লিস্টগুলো খালি। এর কারণ হলো আমরা এখনো জানি না কোন স্যান্ডউইচ ৭৫-এর বেশি বার অর্ডার হয়েছে।

এরপর, আমরা আমাদের স্যান্ডউইচ এবং অর্ডার লিস্টের ওপর ইটারেট করি যাতে বুঝতে পারি কোন স্যান্ডউইচ ৭৫-এর বেশি বার অর্ডার হয়েছে। আমরা একটি for লুপ ব্যবহার করে এটি করতে পারি:

for s in range(0, len(sandwiches)):
    if orders[s] > 75:
        orders_75 = orders_75 + s

আমাদের কোড ০ এবং "sandwiches" লিস্টের দৈর্ঘ্যের রেঞ্জের প্রতিটি নম্বরের মাধ্যমে লুপ করে। যদি "orders" লিস্টে একটি স্যান্ডউইচের জন্য কোরেসপন্ডিং ভ্যালু ৭৫-এর বেশি হয়, আমরা সেই স্যান্ডউইচের ইনডেক্স পজিশন "orders_75" লিস্টে যোগ করি।

এরপর, আমরা একটি for লুপ লিখি যা প্রিন্ট করে কোন স্যান্ডউইচ ৭৫-এর বেশি বার অর্ডার হয়েছে আমাদের প্রোগ্রাম কাজ করছে কিনা চেক করতে:

for o in orders_75:
    print(sandwiches[o])

আমাদের পাইথন কোড রান করি এবং দেখি কী হয়:

Traceback (most recent call last):
  File "main.py", line 9, in 
    orders_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

আমাদের কোড ৭৫-এর বেশি বার অর্ডার হওয়া স্যান্ডউইচের লিস্ট প্রিন্ট করে। এই ক্রিয়েটেরিয়া পূরণ করা দুটি স্যান্ডউইচ রয়েছে: Chicken Club এবং Cheese।

উপসংহার

"TypeError: can only concatenate list (not "int") to list" এরর তখন আরাইজ হয় যখন আপনি একটি ইন্টিজার লিস্টের সাথে কনক্যাটেনেট করার চেষ্টা করেন।

এই এরর আরাইজ হয় কারণ শুধু লিস্ট লিস্টের সাথে কনক্যাটেনেট করা যায়। এই এরর সমাধান করতে, লিস্টে আইটেম যোগ করতে append() মেথড ব্যবহার করুন।

এখন আপনি এই পাইথন এরর প্রফেশনালের মত সমাধান করার জন্য প্রস্তুত!

  1. পাইথনে 'in' অপারেটর স্পিড আপ করা

  2. Python-এ একটি লিস্টে নেই এমন র‍্যান্ডম নম্বর বের করা

  3. পাইথনে লিস্টকে সেকেন্ড লিস্টে অ্যাপেন্ড করা (কনক্যাটেনেট লিস্ট)

  4. পাইথন ফাংশন থেকে লিস্ট রিটার্ন করার পদ্ধতি