با استفاده از ماژول heapq در پایتون یک تابع بنویسید که از میان یک لیست بزرگ از اعداد اعشاری k عنصر کوچکترین را بهطور کارآمد بازگرداند.
3.0 بازدید آخرین ویرایش در 202 روز قبل ساعت 02:47 0.0
برای حل این مسئله میتوانید از توابع آمادهٔ heapq مثل nsmallest یا با نگهداری یک heap با اندازهٔ حداکثر k (مثلاً با درج اعداد منفی یا استفاده از heappush/heappop) عناصر را بهصورت کارآمد انتخاب کنید؛ این روش برای رشتههای دادهٔ بزرگ زمان O(n log k) و حافظهٔ O(k) دارد که در محاسبات علمی و پردازش دادههای با کارایی بالا مفید است. نکتهها: از heapq.heapify زمانی که لیست اولیه را میخواهید به هیپ تبدیل کنید استفاده کنید، و برای جریانهای دادهای از heappushpop برای کارایی بیشتر بهره ببرید؛ همچنین مراقب نوع دادهها (float) و ترتیب بازگشت نتایج باشید.
1 پاسخ
جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من
در حال بارگیری...
برای ارسال پاسخ باید با حساب کاربری وارد شوید.
ورود به حساب کاربری
برای یافتن k عدد کوچکتر از یک لیست بزرگ با کارایی مناسب، از heapq و نگهداری یک هیپ به اندازه k استفاده کنید (یا از تابع nsmallest هم میتوانید بهره ببرید). میتوانید لیست را با heapify کردنه آماده کنید یا بهطور پیاپی با استفاده از heappush/heappushpop، اندازهٔ هیپ را ثابت نگه دارید تا زمان کل O(n log k) و مصرف حافظه O(k) باشد. اگر دادهها شامل NaN هستند یا از نوع دادههای مختلف استفاده میکنید، مقایسهها میتواند نامنظم شود؛ بهتر است NaN را فیلتر کرده یا از کلید جایگزین استفاده کنید. همچنین خروجی معمولاً به ترتیب صعودی است، اما با دادههای نامشخص ممکن است رفتار متفاوتی بروز کند.
گزارش