وبلاگ رسانگار
با ما حرفه ای باشید

سرور مجازی NVMe

نحوه ارسال چندین آرگومان به تابع map() در پایتون

0 11
زمان لازم برای مطالعه: 3 دقیقه


معرفی

هدف پایتون، با مجموعه ای غنی از توابع داخلی، این است که به توسعه دهندگان اجازه دهد کارهای پیچیده را با سهولت نسبی انجام دهند. یکی از این عملکردهای قدرتمند که اغلب نادیده گرفته می شود، این است map() تابع. را map() تابع یک تابع معین را روی مجموعه ای از آیتم ها اجرا می کند، اما چگونه آرگومان های اضافی را به تابع ارائه شده ارسال کنیم؟

در این بایت، ما به بررسی آن خواهیم پرداخت map() تابع و نحوه انتقال موثر چندین آرگومان به آن.

را نقشه () تابع در پایتون

را map() تابع در پایتون یک تابع داخلی است که یک تابع داده شده را برای هر آیتم از یک تکرار (مانند لیست، تاپل و غیره) اعمال می کند و لیستی از نتایج را برمی گرداند.

def square(number):
    return number ** 2

numbers = (1, 2, 3, 4, 5)
squared = map(square, numbers)

print(list(squared))  

در این قطعه، یک تابع تعریف کرده ایم square() که یک عدد را می گیرد و مربع آن را برمی گرداند. سپس از map() تابع برای اعمال این square() عملکرد به هر آیتم در numbers فهرست

چرا آرگومان های متعدد را به نقشه ()?

ممکن است از خود بپرسید: «چرا باید چندین آرگومان را به آن منتقل کنم map()خوب، سناریوهایی وجود دارد که ممکن است تابعی داشته باشید که بیش از یک آرگومان می گیرد و می خواهید این تابع را به طور همزمان روی چندین مجموعه داده اعمال کنید.

پیشنهاد می‌کنیم بخوانید:  پیشوندهای رشته «u» و «r» و رشته‌های خام در پایتون

نه هر عملکردی که ما به آنها ارائه می کنیم map() فقط یک آرگومان خواهد گرفت. چه می شود اگر به جای الف squared تابع، ما یک عمومی تر است math.pow تابع، و یکی از آرگومان ها این است که آیتم را به چه عددی افزایش دهیم. چگونه با چنین پرونده ای برخورد کنیم؟

یا شاید شما دو لیست از اعداد دارید و می خواهید حاصل ضرب اعداد مربوطه را از این لیست ها پیدا کنید. این مورد دیگری است که در آن چندین آرگومان ارسال می شود map() می تواند مفید باشد

چگونه آرگومان های متعدد را به نقشه ()

چند نوع مختلف از موارد وجود دارد که در آن شما می خواهید چندین آرگومان را به آنها منتقل کنید map()، دو مورد از آنها را در بالا ذکر کردیم. ما در اینجا هر دو مورد را بررسی خواهیم کرد.

تکرارهای متعدد

ارسال چندین آرگومان به map() هنگامی که نحوه انجام آن را بدانید، عملکرد ساده است. شما به سادگی تکرارهای اضافی را بعد از آرگومان تابع و map() موارد را از هر تکرار پذیر می گیرد و به عنوان آرگومان های جداگانه به تابع ارسال می کند.

در اینجا یک مثال است:

def multiply(x, y):
    return x * y

numbers1 = (1, 2, 3, 4, 5)
numbers2 = (6, 7, 8, 9, 10)
result = map(multiply, numbers1, numbers2)

print(list(result))  

توجه داشته باشید: مطمئن شوید که تعداد آرگومان های تابع باید با تعداد تکرارپذیرهای ارسال شده مطابقت داشته باشد map()!

در مثال بالا، یک تابع تعریف کرده ایم multiply() که دو آرگومان می گیرد و محصول آنها را برمی گرداند. سپس این تابع را به همراه دو لیست به map() تابع. را map() تابع اعمال می شود multiply() به هر جفت از آیتم های مربوطه از دو لیست، و یک لیست جدید با نتایج را برمی گرداند.

پیشنهاد می‌کنیم بخوانید:  آموزش کتابخانه zlib پایتون

آرگومان های متعدد، یک تکرار پذیر

در ادامه با ما math.pow به عنوان مثال، بیایید ببینیم چگونه می توانیم هنوز استفاده کنیم map() برای اجرای این تابع روی تمام آیتم های یک آرایه.

اولین و احتمالا ساده ترین راه این است که استفاده نکنید map() به هیچ وجه، اما به جای آن از چیزی مانند درک لیست استفاده کنید.

import math

numbers = (1, 2, 3, 4, 5)
res = (math.pow(n, 3) for n in numbers)

print(res) 

این همه چیز اساسی است map() واقعاً اینطور است، اما به اندازه استفاده از یک عملکرد راحت مانند کوچک و مرتب نیست map().

حالا بیایید ببینیم چگونه می توانیم در حقیقت استفاده کنید map() با تابعی که به چندین آرگومان نیاز دارد:

import math
import itertools

numbers = (1, 2, 3, 4, 5)
res = map(math.pow, numbers, itertools.repeat(3, len(numbers)))

print(list(res)) 

این ممکن است در ابتدا کمی پیچیده تر به نظر برسد، اما در واقع بسیار ساده است. ما از یک تابع کمکی استفاده می کنیم، itertools.repeat، برای ایجاد لیستی به همان طول numbers و تنها با مقادیر 3.

بنابراین خروجی از itertools.repeat(3, len(numbers))، هنگامی که به یک لیست تبدیل می شود، فقط است (3, 3, 3, 3, 3). این کار به این دلیل کار می کند که ما اکنون دو لیست با طول یکسان را به آنها منتقل می کنیم map()، که با خوشحالی می پذیرد.

نتیجه

را map() تابع به ویژه هنگام کار با تکرارهای متعدد مفید است، زیرا می تواند یک تابع را به عناصر این تکرارپذیرها به صورت جفت، سه تایی یا بیشتر اعمال کند. در این بایت، نحوه ارسال آرگومان های متعدد به آن را پوشش داده ایم map() تابع و نحوه کار با تکرارهای متعدد





منتشر شده در 1402-12-26 16:25:05

امتیاز شما به این مطلب
دیدگاه شما در خصوص مطلب چیست ؟

آدرس ایمیل شما منتشر نخواهد شد.

لطفا دیدگاه خود را با احترام به دیدگاه های دیگران و با توجه به محتوای مطلب درج کنید