یک تابع پایتون بنویسید که با استفاده از ماژول bisect یک لیست مرتب از اعداد شناور را بهروزرسانی کند بهطوریکه مقدار جدید را در مکان مناسب درج کند و تنها k کوچکترین مقادیر را نگه دارد
3.0 بازدید آخرین ویرایش در 202 روز قبل ساعت 02:35 0.0
با استفاده از ماژول bisect (مثلاً bisect.insort یا bisect.insort_left) میتوانید مقدار جدید را بهصورت صحیح در لیست مرتب وارد کنید و سپس اگر طول لیست از k بیشتر شد، بزرگترین عنصر (انتهای لیست اگر صعودی مرتب باشد) را حذف کنید. نکات: برای مدیریت تکراریها از bisect_left یا bisect_right استفاده کنید؛ درج در لیست پیوسته O(n) است بنابراین برای مجموعههای بسیار بزرگ بهتر است از heapq (برای نگهداشتن k کوچکترینها) یا numpy.partition (برای محاسبات عددی سریعتر) استفاده کنید؛ همچنین به دقت عددی اعداد شناور در محاسبات علمی توجه کنید.
1 پاسخ
جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من
در حال بارگیری...
برای ارسال پاسخ باید با حساب کاربری وارد شوید.
ورود به حساب کاربری
استفاده از bisect برای درج مقدار جدید در یک لیست مرتب شناور کار میکند، اما درج در لیست پیوسته با طول n زمان O(n) است. برای نگه داشتن تنها k کوچکترین مقدار، بهتر است بهجای نگه داشتن کل لیست مرتب از heapq یا ساختار حداکثر-heap استفاده کنید تا هر بار در زمان O(log k) کار شود. همچنین برای برخورد با مقادیر تکراری از bisect_left یا bisect_right بسته به نیاز استفاده کنید. و به دقت اعشار و دقت عددی در محاسبات علمی هم توجه کنید.
گزارش