একটি লিস্ট থেকে K দৈর্ঘ্যের সকল অর্ডার্ড পেয়ার (রিপিটিশন সহ) বের করে যেসবের যোগফল N, সেগুলো খুঁজে বের করতে itertools.product ব্যবহার করা হয়।
উদাহরণ কোড
from itertools import product
my_list = [45, 32, 67, 11, 88, 90, 87, 33, 45, 32]
print("The list is:")
print(my_list)
N = 77
K = 2
print(f"The value of N is {N}")
print(f"The value of K is {K}")
my_result = []
for sub in product(my_list, repeat=K):
if sum(sub) == N:
my_result.append(sub)
print("The result is:")
print(my_result)
আউটপুট
The list is: [45, 32, 67, 11, 88, 90, 87, 33, 45, 32] The value of N is 77 The value of K is 2 The result is: [(45, 32), (45, 32), (32, 45), (32, 45), (45, 32), (45, 32), (32, 45), (32, 45)]
ব্যাখ্যা
product(my_list, repeat=K)— লিস্টের এলিমেন্টগুলো নিয়েK-দৈর্ঘ্যের কার্টেশিয়ান প্রোডাক্ট (রিপিটিশন সহ) তৈরি করে।- যেহেতু লিস্টে 45 এবং 32 দুবার করে আছে, তাই (45, 32) এবং (32, 45) একাধিকবার আসছে।
sum(sub) == N— যোগফল চেক করে ফিল্টার।
দ্রষ্টব্য
যদি ইউনিক পেয়ার চান, তবে itertools.combinations_with_replacement বা সেট ব্যবহার করুন। product অর্ডার ম্যানেজ করে (45,32) এবং (32,45) আলাদা গণনা করে।