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

পাইথনে দুটি লিস্ট থেকে পেয়ার বানানো যেখানে এলিমেন্ট সমান নয়


সমস্যা বিবরণ

দুটি লিস্ট দেওয়া আছে। সব সম্ভাব্য পেয়ার (i, j) বানাতে হবে যেখানে i প্রথম লিস্ট থেকে, j দ্বিতীয় লিস্ট থেকে, এবং i ≠ j।

উদাহরণ

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

Output: [(1, 5), (1, 8), (1, 7), (1, 3), (1, 6), (2, 5), ... (5, 6)]
# মোট ২৬টি পেয়ার (5×6 - ৪টি সমান পেয়ার বাদ)

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

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

result = [(i, j) for i in list_1 for j in list_2 if i != j]
print(result)

পদ্ধতি ২: itertools.product + ফিল্টার


import itertools

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

pairs = itertools.product(list_1, list_2)  # কার্তেসিয়ান প্রোডাক্ট
result = [pair for pair in pairs if pair[0] != pair[1]]
print(result)

তুলনা

পদ্ধতিরিডেবিলিটিপারফরম্যান্সমেমরি
List Comprehensionউচ্চদ্রুতO(n×m)
itertools.productমিডিয়ামসमानO(1) এক্সট্রা (জেনারেটর)

বड़े ডেটাসেটের জন্য জেনারেটর ভার্সন


def generate_pairs(list_1, list_2):
    for i in list_1:
        for j in list_2:
            if i != j:
                yield (i, j)

# মেমরি দক্ষ - একবারে একটা
for pair in generate_pairs(list_1, list_2):
    print(pair)  # প্রসেস করুন

উপসংহার

  • ছোট/মিডিয়াম লিস্টের জন্য **লিস্ট কম্প্রিহেনশন** সেরা
  • বড় লিস্ট বা স্ট্রিমিং প্রসেসিং জন্য **জেনারেটর** বা **itertools**
  • কন্ডিশন i != j ফিল্টার হিসেবে কাজ করে
  1. পাইথনে দুটি বাইনারি ট্রির লিফ সিকোয়েন্স মিল কিনা যাচাই

  2. পাইথনে দুটি লিস্ট থেকে সর্বোচ্চ ডিস্ট্যান্স পেইর বের করার প্রোগ্রাম

  3. পাইথনে দুটি BST থেকে দিয়ে সম সংখ্যায় পেয়ার (pair) খুঁজে বের করা

  4. পাইথনে ম্যাট্রিক্স থেকে ভিন্ন সারির উপাদান দিয়ে সমান সম্বলিত পেয়ার খুঁজে বের করা