Adam Ebrahim نشر 28 مايو 2021 أرسل تقرير نشر 28 مايو 2021 كيف أقوم بضرب مجموعة من القاوائم للحصول على كل الإحتمالات الممكنة الناتجة عن ضرب هذه القوائم، على سبيل المثال لدي القائمة التالية: sections = [ [1, 2, 3], [4, 5], [6, 7] ] كيف أحصل على مجموعة من القائم كالتالي: [ [1, 4, 6], [1, 4, 7], [1, 5, 6], [1, 5, 7], [2, 4, 6], [2, 4, 7], [2, 5, 6], [2, 5, 7], [3, 4, 6], [3, 4, 7], [3, 5, 6], [3, 5, 7] ] 1 اقتباس
1 عبدالله عبدالرحمن11 نشر 28 مايو 2021 أرسل تقرير نشر 28 مايو 2021 يمكنك إستدعاء هذه الحزمة itertools.product و هي متاحة في بايثون من إصدار 2.6 import itertools sections = [ [1, 2, 3], [4, 5], [6, 7] ] for element in itertools.product(*sections): print(element) وهذا الكود مشابه للكود السابق for element in itertools.product([1, 2, 3], [4, 5], [6, 7]): print(element) 2 اقتباس
1 Ali Haidar Ahmad نشر 17 سبتمبر 2021 أرسل تقرير نشر 17 سبتمبر 2021 أول طريقة من خلال استخدام النهج التكراري (الحلقات التكرارية): # باستخدام الحلقات التكرارية def cartesian_iterative(list): result = [[]] for l in list: result = [x+[y] for x in result for y in l] return result # الآن يمكننا استخدام التابع السابق لتنفيذ الجداء الديكارتي على القوائم sections = [ [1, 2, 3], [4, 5], [6, 7] ] cartesian_iterative(sections) من خلال استخدام lambda و reduce: # تعريف التابع def prod(pools): import functools from itertools import product return list(functools.reduce(lambda x,y: product(x,y) , pools)) # استخدامه prod(sections) أو من خلال العودية: # تعريف التابع def product(ar_list): if not ar_list: yield () else: for a in ar_list[0]: for prod in product(ar_list[1:]): yield (a,)+prod # لاستخدامه list(product(sections)) 1 اقتباس
السؤال
Adam Ebrahim
كيف أقوم بضرب مجموعة من القاوائم للحصول على كل الإحتمالات الممكنة الناتجة عن ضرب هذه القوائم، على سبيل المثال لدي القائمة التالية:
كيف أحصل على مجموعة من القائم كالتالي:
2 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.