یک برنامه پایتون بنویس که با استفاده از تابع builtin zip دو لیست عددی هم‌طول را جفت‌سازی کند، حاصل‌ضرب هر جفت را محاسبه کند و جمع این حاصل‌ضرب‌ها (dot product) را برگرداند.

18.0 بازدید آخرین ویرایش در 198 روز قبل ساعت 04:34

0.0

برای حل این مسئله کافی است از zip برای پیمایش هم‌زمان دو لیست استفاده کنید و با یک comprehension یا حلقه ساده حاصل‌ضرب هر زوج را محاسبه و با تابع sum جمع بزنید (مثال: sum(a*b for a,b in zip(list1,list2))). توجه داشته باشید که zip تا طول کوتاه‌ترین لیست را می‌گیرد؛ اگر لازم است لیست‌ها طول‌های متفاوت داشته باشند از itertools.zip_longest استفاده کنید یا ابتدا طول‌ها را بررسی کنید. برای محاسبات عددی بزرگ یا سرعت بالا می‌توانید از numpy.dot استفاده کنید؛ برای اسکریپت‌نویسی ورودی را از کاربر یا فایل بخوانید و خروجی را چاپ یا در فایل ذخیره کنید.

توسط پژوهشگر در 198 روز قبل ساعت 04:34
دسته بندی ها: Python Python for beginner
sara در 198 روز قبل ساعت 04:35

برای محاسبهٔ dot product با zip کافی است زوج‌ها را هم‌زمان پیمایش و حاصل‌ضرب‌ها را جمع کنید؛ استفاده از یک generator expression مثل sum(a*b for a,b in zip(...)) حافظه‌نگهدار و سریع است چون لیست میانی نمی‌سازد. دقت کنید zip تا طول کوتاه‌ترین لیست را می‌گیرد، پس اگر باید طول‌ها برابر باشند ابتدا چک کنید یا از itertools.zip_longest با مقدار پیش‌فرض مناسب استفاده کنید. برای بردارهای بزرگ یا محاسبات عددی با کارایی بالا از numpy.dot بهره ببرید.

گزارش

1 پاسخ

جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من

در حال بارگیری...
ورود به حساب کاربری