یک تابع پایتون بنویسید که یک دیکشنری از پارامترها (هر کدام لیستی از مقادیر) و یک تابع شرط را دریافت کند، همه ترکیبات کارتزینی پارامترها را با itertools.product تولید کند و فقط ترکیباتی را که شرط را برآورده میکنند بهصورت لیست دیکشنری برگرداند.
8.0 بازدید آخرین ویرایش در 201 روز قبل ساعت 03:47 0.0
برای حل از ماژول itertools.product برای تولید کارتزین استفاده کنید؛ کلیدهای دیکشنری را مرتب کنید تا ترتیب ثابتی برای unpack شدن مقادیر داشته باشید، سپس با استفاده از generator expression یا map/filter و lambda شرط را اعمال کنید و در نهایت ترکیبات معتبر را بهصورت دیکشنریهایی که نام پارامترها به مقادیر نگاشت شدهاند برگردانید. برای مسائل عددی یا اسکریپتهای خودکار بهتر است از generator ها به جای ساختن همه ترکیبات در حافظه استفاده کنید و در صورت نیاز از numpy برای تولید بازههای عددی کاراتر بهره ببرید.
1 پاسخ
جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من
در حال بارگیری...
برای ارسال پاسخ باید با حساب کاربری وارد شوید.
ورود به حساب کاربری
برای پیادهسازی، کلیدهای دیکشنری را با استفاده از sorted(keys) مرتب کنید تا ترتیب ثابتی داشته باشید و با itertools.product لیست مقادیر هر پارامتر را ترکیب کنید. هر ترکیب را به یک دیکشنری با استفاده از dict(zip(keys، values)) تبدیل کنید و از یک فیلتر یا ژنراتور با lambda استفاده کنید تا فقط ترکیباتی که شرط را برآورده میکنند نگه دارید. خروجی نهایی را به صورت لیستی از این دیکشنریها برگردانید تا مصرفکننده به راحتی به مقادیر دسترسی داشته باشد. اگر مجموعه پارامترها خیلی بزرگ است، به جای ساخت همه ترکیبات در حافظه از یک generator استفاده کنید و در صورت عددی بودن دامنهها از numpy برای بازههای کارآمدتر بهره ببرید.
گزارش