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

পাইথনে একাধিক লিস্টের ইন্টারসেকশন বের করা


সমস্যা বিবরণ

দুটি লিস্ট যেগুলো সাব-লিস্ট ধারণ করে, তাদের কমন সাব-লিস্ট গুলো বের করতে হবে।

উদাহরণ

list_1 = [[1, 2], [3, 4], [5, 6]]
list_2 = [[3, 4]]
Output: [[3, 4]]

পদ্ধতি ১: লিস্ট কম্প্রিহেনশন

প্রথম লিস্টের সাব-লিস্ট গুলো ইটারেট করে যেগুলো দ্বিতীয় লিস্টে আছে সেগুলো কलेक्ट করুন।

list_1 = [[1, 2], [3, 4], [5, 6]]
list_2 = [[3, 4]]

result = [sub_list for sub_list in list_1 if sub_list in list_2]
print(result)  # [[3, 4]]

নোট: এটি O(n×m) সময় নেয় কারণ in অপারেশন লিস্টে লিনিয়ার সার্চ করে।

পদ্ধতি ২: সেট ব্যবহার করে (দক্ষ)

লিস্টকে টাপলে কনভার্ট করে সেট বানান, তারপর ইন্টারসেকশন নিন। টাপল হ্যাশেবল, লিস্ট নয়।

list_1 = [[1, 2], [3, 4], [5, 6]]
list_2 = [[3, 4]]

# টাপলে কনভার্ট
tuple_1 = map(tuple, list_1)
tuple_2 = map(tuple, list_2)

# ইন্টারসেকশন
result = list(map(list, set(tuple_1).intersection(tuple_2)))
print(result)  # [[3, 4]]

তুলনা

পদ্ধতিসময় জটিলতাব্যবহারযোগ্যতা
List ComprehensionO(n × m)ছোট লিস্টের জন্য ঠিক
Set IntersectionO(n + m)বড় লিস্টের জন্য দক্ষ

উপসংহার

  • লিস্ট অফ লিস্ট ইন্টারসেক্ট করতে হলে সেট+টাপল পদ্ধতি দ্রুত
  • অর্ডার মেইনটেইন করতে হলে লিস্ট কম্প্রিহেনশন ব্যবহার করুন
  • ডুপ্লিকেট হ্যান্ডলিং সেট আটোমেটিক করে দেয়
  1. পাইথনে intersection() ফাংশন

  2. পাইথনে zip() ফাংশন ব্যবহার করে একাধিক লিস্ট একসাথে ইটারেট করার প্রোগ্রাম

  3. পাইথনে একাধিক লিস্ট একসাথে লুপ করা

  4. পাইথন লিস্ট মাস্টার করুন: তৈরি, অ্যাক্সেস এবং ম্যানিপুলেশন