یک تابع پایتون بنویسید که یک آرایهٔ عددی (لیست یا numpy array) را گرفته، آن را به شکل قابلهش تبدیل کند و با استفاده از builtin تابع hash() مقدار هش را برگرداند تا برای کش کردن نتایج محاسبات عددی قابلاستفاده باشد.
30.0 بازدید آخرین ویرایش در 198 روز قبل ساعت 04:20 0.0
برای حل، در پایتون از تبدیل آرایه به یک نوع immutable مانند tuple استفاده کنید (مثلاً tuple(my_list) یا tuple(np_array.tolist())) تا بتوانید hash() را روی آن اعمال کنید؛ برای numpy array میتوانید از np_array.tobytes() هم استفاده کنید که سریعتر است اما توجه داشته باشید که برای اعداد اعشاری ممکن است لازم باشد مقدارها را با round(x, n) تثبیت کنید تا نوسانات دقیق اعشاری تاثیر منفی بر کش نداشته باشد. در اتوماسیون یا اسکریپتهای عددی از این هش میتوان برای کلید دیکشنری کش یا نام فایل موقت استفاده کرد و اگر نیاز به ثبات بین اجرای برنامهها بود، بهجای hash() از hashlib (مثلاً sha256) استفاده کنید.
1 پاسخ
جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من
در حال بارگیری...
برای ارسال پاسخ باید با حساب کاربری وارد شوید.
ورود به حساب کاربری
برای هشکردن آرایهها معمولاً آرایهها را به نوع immutable مثل tuple تبدیل کنید یا برای numpy از np_array.tobytes() که سریعتر است و همراه با dtype و shape آن در کلید وارد شود تا برخوردهای ناخواسته جلوگیری شود. برای مقادیر اعشاری بهتر است پیش از هش گرفتن با round(x, n) یا quantize کردن دقت را تثبیت کنید تا نوسانات ریز اعشاری کش را خراب نکند. توجه داشته باشید که hash() داخلی پایتون بین اجراها و پروسسها تصادفی است و اگر ثبات بین جلسات لازم دارید از hashlib (مثلاً sha256) استفاده کنید. همچنین به اندینسبایتی (endianness) و ترتیب بایتها دقت کنید چون میتواند باعث تغییر هش شود.
گزارش