দুটি লিস্টের সব সম্ভাব্য জোড়া (Cartesian product) বানিয়ে তাদের গুণফল বের করার জন্য লিস্ট কম্প্রিহেনশন এবং * অপারেটর ব্যবহার করা হয়।
উদাহরণ
list1 = [14, 35, 26]
list2 = [36, 24, 12]
print("লিস্ট ১:", list1)
print("লিস্ট ২:", list2)
# ক্রস পেয়ার গুণফল: list2-এর প্রতিটি এলিমেন্ট × list1-এর প্রতিটি এলিমেন্ট
result = [i * j for j in list1 for i in list2]
print("ক্রস গুণফল লিস্ট:")
print(result)
আউটপুট
লিস্ট ১: [14, 35, 26]
লিস্ট ২: [36, 24, 12]
ক্রস গুণফল লিস্ট: [504, 336, 168, 1260, 840, 420, 936, 624, 312]
ব্যাখ্যা
[i * j for j in list1 for i in list2] এর অর্ডার:
- list2-এর প্রথম এলিমেন্ট (36) × list1-এর সব (14, 35, 26) → 504, 1260, 936
- list2-এর دوم এলিমেন্ট (24) × list1-এর সব → 336, 840, 624
- list2-এর তৃতীয় এলিমেন্ট (12) × list1-এর সব → 168, 420, 312
মোট ৩ × ৩ = ৯ টি ফলাফল।
itertools.product ব্যবহার (সুপারিশকৃত)
from itertools import product
result = [i * j for i, j in product(list2, list1)]
# একই ফলাফল, আরও পঠনযোগ্য
টাপল আউটপুট (যে জোড়া থেকে আসলো)
pairs = [(i, j, i*j) for i, j in product(list2, list1)]
for a, b, prod in pairs:
print(f"{a} × {b} = {prod}")
NumPy outer product (দ্রুত, ভেক্টরাইজড)
import numpy as np
arr1 = np.array(list1)
arr2 = np.array(list2)
outer = np.outer(arr2, arr1).flatten() # বা ravel()
print(outer) # [504 336 168 1260 840 420 936 624 312]