الأخبار التكنولوجية والاستعراضات والنصائح!

وظيفة خريطة بايثون () ، موضحة بأمثلة

في هذا البرنامج التعليمي ، ستتعلم كيفية استخدام وظيفة Python map () لتطبيق دالة على جميع الكائنات في ملف قابل للتكرار.

تدعم Python نموذج البرمجة الوظيفية ، والذي يسمح لك بتحديد المهام مثل حساب الوظائف برمجيًا. يمكنك التعامل مع وظائف Python ككائنات: يمكن أن تأخذ الوظيفة وظيفة أخرى كمعامل وتعيد وظيفة أخرى.

تأخذ وظيفة map () وظيفة كوسيطة وتسمح لك بتطبيقها على جميع الكائنات في تسلسل.

بنهاية هذا البرنامج التعليمي ، ستتمكن من استخدام وظيفة خريطة Python – لإعادة كتابة الحلقات المطولة وطرق عرض القائمة. سوف تكوّن عدة أمثلة لفهم الطرق المختلفة التي يمكنك من خلالها استخدام وظيفة map ().

كيفية تطبيق دالة على عناصر قائمة بايثون

لنبدأ مناقشتنا بمثال

هنا ، الأعداد هي قائمة بالأرقام.

عدد = [2,4,3,7]

بعد ذلك ، ضع في اعتبارك وظيفة self_pow (). تأخذ الدالة self_pow () رقمًا كوسيطة وتعيد الرقم المرفوع إلى قوة الرقم: n ** n.

في بايثون ، ** هي عامل الأُس. تُرجع a ** b قيمة a مرفوعة إلى الأس b ، ab.

def self_pow (n): إرجاع n ** n

ما يجب القيام به: لإنشاء قائمة جديدة nums_pow من خلال تطبيق وظيفة self_pow () على كل عنصر في قائمة nums.

تستخدم للحلقة

للقيام بذلك ، يمكنك استخدام حلقات for في بايثون:

  • لكل رقم في قائمة الأعداد ، استدع دالة self_pow () مع num كوسيطة.
  • قم بإلحاق نتيجة استدعاء الوظيفة بالقائمة الجديدة nums_pow.
  • nums_pow = []

    للأرقام بالأرقام: nums_pow.append (self_pow (num)) print (nums_pow)

    في الإخراج ، يتم رفع كل رقم إلى نفسه. عناصر قائمة nums_pow هي كما يلي: 22، 44، 33،77.

    انتاج |
    [4, 256, 27, 823543]

    استخدام قائمة الفهم

    يمكنك القيام بذلك بإيجاز باستخدام قوائم الفهم. من حلقة for الصريحة أعلاه ، يمكننا تحديد تعبير الإخراج والقائمة المراد تجاوزها.

    وظيفة خريطة بايثون () ، موضحة بأمثلة 1

    يمكننا بعد ذلك تعديل تعبير فهم القائمة العامة:

    new_list = [ for item in iterable]

    يكون تعبير list comprehension لتوليد nums_pow كما يلي:

    nums_pow = [self_pow(num) for num in nums]
    طباعة (nums_pow)

    الإخراج هو نفسه من استخدام حلقات for ، كما هو متوقع.

    انتاج |
    [4, 256, 27, 823543]

    بدلاً من التكرار الحلقي والقائمة ، يمكنك استخدام وظيفة Python map () بتركيبة موجزة وتساعد على تطبيق الوظيفة على جميع الكائنات في التكرار. لنبدأ بتعلم بناء جملة وظيفة الخريطة.

    خريطة بايثون () بناء الجملة

    وظيفة خريطة بايثون () ، موضحة بأمثلة 2

    الصيغة العامة لاستخدام وظيفة خريطة بايثون () هي كما يلي:

    الخريطة (وظيفة ، iterable_1 ،[iterable_2,…,iterable_n])

    تأخذ الدالة map () وسيطتين على الأقل ، دالة وقابلة للتكرار.

    في النحو أعلاه:

  • دالة تشير إلى دالة بايثون أو بشكل عام أي لغة بايثون قابلة للاستدعاء. يتضمن ذلك الوظائف المحددة والمضمنة من قِبل المستخدم ، والفئات ، وطرق المثيل والفئة ، والمزيد.
  • قابل للتكرار هو أي لغة Python قابلة للتكرار ، مثل list و tuple و string.
  • يتم تطبيق وظيفة map () ، ويتم استخدام الوظيفة لكل عنصر من العناصر القابلة للتكرار.
  • ماذا ترجع الدالة map ()؟

    تقوم بإرجاع كائن الخريطة. يمكنك بعد ذلك تحويل كائن الخريطة إلى قائمة باستخدام الصيغة: list (map (function، iterable)).

    اعتمادًا على حالة الاستخدام ، يمكنك تحويلها إلى مجموعة Python.

    وظيفة خريطة بايثون () ، موضحة بأمثلة 3

    الآن بعد أن تعلمت بناء جملة دالة خريطة Python () ، فلنبدأ في أمثلة الترميز.

    يجب أن يكون لديك Python 3.x لمتابعة هذا البرنامج التعليمي. خلاف ذلك ، يمكنك تشغيل المقتطفات في adminvista.com عبر الإنترنت محرر Python.

    كيفية استخدام وظيفة map () مع وظائف محددة من قبل المستخدم

    وظيفة خريطة بايثون () ، موضحة بأمثلة 4

    # 1. في السابق ، قمنا بتطبيق دالة self_pow () على كل رقم في قائمة الأعداد. في صيغة الدالة map () ، يمكننا تمرير الدالة self_pow و listnums كوسائط.

    ملاحظة: يجب عليك فقط تحديد اسم الوظيفة وليس استدعاء الوظيفة. استخدم self_pow وليس self_pow ().

    تقوم الدالة map () بإرجاع كائن الخريطة.

    طباعة (خريطة (self_pow ، أرقام))

    يمكننا بعد ذلك تحويل كائن الخريطة إلى قائمة باستخدام وظيفة list () كما هو موضح أدناه.

    nums_pow = list (map (self_pow، nums)) print (nums_pow)

    هنا هو الإخراج حيث يتم تعيين كل عدد بالأرقام إلى numnum في قائمة nums_pow.

    انتاج |
    [4, 256, 27, 823543]

    # 2. ضع في اعتبارك الوظيفة التالية inch_to_cm () التي تحول البوصة إلى سنتيمترات. 1 بوصة = 2.54 سم.

    def inch_to_cm (inch): إرجاع بوصة * 2.54

    لتحويل قيم البوصة في قائمة البوصة إلى سنتيمترات ، يمكنك استخدام وظيفة map () الموضحة في خلية الكود أدناه.

    بوصة = [5.54,3.4,1,25,8.2]
    cms = list (map (inch_to_cm، inch)) print (cms)

    تحتوي قائمة CMS على قيم البوصة المعبر عنها بالسنتيمتر.

    انتاج |
    [14.0716, 8.636, 2.54, 63.5, 20.828]

    كيفية استخدام وظيفة map () مع الوظائف المضمنة

    وظيفة خريطة بايثون () ، موضحة بأمثلة 5

    في هذا القسم ، سوف نتعلم كيفية استخدام map () مع الوظائف المضمنة في Python.

    # 1. سلاسل القائمة هي قائمة لغات البرمجة. تريد إنشاء قائمة جديدة strings_upper تحتوي على سلاسل الأحرف الكبيرة للغة البرمجة.

    سلاسل = [‘JavaScript’,’Rust’,’Python’,’Go’]

    تعمل طريقة السلسلة المضمنة .upper () على سلسلة وترجع نسخة منسقة بأحرف كبيرة.

    strings_upper = list (map (str.upper، strings)) طباعة (strings_upper)

    تتضمن قائمة strings_upper سلاسل في سلاسل القائمة المنسقة بأحرف كبيرة.

    انتاج |
    [‘JAVASCRIPT’, ‘RUST’, ‘PYTHON’, ‘GO’]

    # 2. تأخذ وظيفة len () المضمنة في Python تسلسلًا كوسيطة وتعيد طولها. للعثور على طول كل سلسلة في قائمة السلسلة ، يمكننا استخدام وظيفة map () وتطبيق دالة الطول على كل سلسلة ، كما هو موضح أدناه.

    strings_len = list (map (len، strings)) طباعة (strings_len) الإخراج
    [10, 4, 6, 2]

    # 3. يمكنك استخدام الوظيفة map () مع المجموعات الأخرى مثل المجموعات.

    يحتوي المثال التالي على مجموعة تحتوي على معلومات حول عدد غرف النوم والمنطقة والمدينة التي يقع فيها المنزل.

    في Python ، ترجع الدالة type () نوع البيانات لأي كائن Python. للحصول على نوع البيانات لجميع العناصر في هذه المجموعة ، يمكنك استخدام الوظيفة map () لاستدعاء وظيفة الكتابة في كل عنصر من عناصر المجموعة.

    منزل = (2،758.5 ​​، ‘بنغالور’) house_elt_type = tuple (خريطة (نوع ، منزل)) طباعة (house_elt_type)

    قمنا برمي كائن الخريطة إلى مجموعة. يمكنك أيضًا الإرسال إلى قائمة أو بعض المجموعات الأخرى.

    في الإخراج أدناه ، نرى أنه تم افتراض أنواع البيانات لـ 2،758.5 ​​و Bangalore كـ “int” و “float” و “str” ​​على التوالي.

    انتاج (و و )

    # 4. في Python ، يمكنك استيراد الوحدات المدمجة واستخدام الوظائف المحددة في الوحدات.

    لحساب الجذر التربيعي لكل رقم في قائمة الأعداد ، يمكنك استخدام دالة الجذر التربيعي sqrt من وحدة الرياضيات.

    استيراد أرقام الرياضيات = [30,90,34,45,97]
    nums_sqrt = list (map (math.sqrt، nums)) print (nums_sqrt) الإخراج
    [5.477225575051661, 9.486832980505138, 5.830951894845301, 6.708203932499369, 9.848857801796104]

    الناتج أعلاه يصعب تحليله ومتابعته. قد ترغب في تقريب كل قيمة جذر تربيعي لتقول منزلتين عشريتين.

    كيفية تقريب رقم فاصلة عائمة في بايثون

    دعنا نحدد دالة round_2 () تأخذ قيمة فاصلة عائمة وتقربها إلى منزلتين عشريتين.

    def round_2 (عدد): عودة الجولة (عدد ، 2)

    يمكنك الآن استخدام دالة map () مع قائمة round_2 و nums_sqrt.

    nums_sqrt_round = list (map (round_2، nums_sqrt)) طباعة (nums_sqrt_round) الإخراج
    [5.48, 9.49, 5.83, 6.71, 9.85]

    يمكنك أيضًا استخدام وظائف map () المتداخلة ، حيث تُستخدم وظيفة الخريطة الداخلية لحساب قائمة الجذر التربيعي nums_sqrt ، وتنفذ وظيفة الخريطة الخارجية عملية التقريب.

    nums_sqrt_round = list (map (round_2، list (map (math.sqrt، nums))) طباعة (nums_sqrt_round) الإخراج
    [5.48, 9.49, 5.83, 6.71, 9.85]

    النواتج متطابقة في كلا النهجين أعلاه. ومع ذلك ، يجب عليك التأكد من أن الشفرة قابلة للقراءة ويمكن صيانتها عند عرض وظائف التداخل أعلاه.

    كيفية استخدام وظيفة map () مع وظائف Lambda

    وظيفة خريطة بايثون () ، موضحة بأمثلة 6

    في الأقسام السابقة ، تعلمت كيفية استخدام وظيفة Python map () مع الوظائف المضمنة والمعرفة من قبل المستخدم. ستتعلم الآن كيفية استخدام وظيفة map () مع وظائف lambda ، والتي تكون مجهولة في Python.

    في بعض الأحيان يكون لديك وظيفة يحتوي جسمها على سطر واحد فقط من التعليمات البرمجية ، وقد تحتاج إلى استخدام الوظيفة مرة واحدة فقط وعدم الرجوع إليها في أي مكان آخر في البرنامج. يمكنك تحديد وظائف مثل دالة lambda في Python.

    ملاحظة: lambda args: expression هو الصيغة العامة لاستخدام دالة Python lambda.

    # 1. ضع في اعتبارك سلاسل القائمة التالية. لنفترض أنك تريد الحصول على قائمة strings_rev – والتي تحتوي على نسخة عكسية من كل سلسلة.

    سلاسل = [‘JavaScript’,’Rust’,’Python’,’Go’]

    يمكننا عكس سلسلة Python باستخدام أداة تقطيع السلسلة.

    ملاحظة: هذا هو تعميم لسلسلة تعبير تقاطع str[start:stop:step].

    – بدون قيم البدء والإيقاف ، تبدأ الشريحة من بداية السلسلة وتمتد حتى نهاية السلسلة. – القيم السالبة للخطوات تنتج شرائح تبدأ من نهاية السلسلة. – ومن ثم str[::-1] إرجاع نسخة عكسية من str.

    يمكنك استخدام وظيفة lambda هذه: lambda x: x[::-1]داخل وظيفة الخريطة ، كما هو موضح أدناه.

    strings_rev = قائمة (خريطة (lambda x: x[::-1]، سلاسل)) طباعة (strings_rev)

    كما هو الحال مع الأمثلة الأخرى ، قمنا بإلقاء كائن الخريطة في قائمة. في الإخراج ، نرى أنه تم عكس كل سلسلة في سلاسل القائمة.

    انتاج |
    [‘tpircSavaJ’, ‘tsuR’, ‘nohtyP’, ‘oG’]

    # 2. في القسم السابق ، قمنا بحساب الجذر التربيعي لكل رقم في قائمة الأرقام ثم قمنا بتقريب كل قيمة جذر تربيعي إلى منزلتين عشريتين.

    استخدمنا الدالة round_2 () للقيام بذلك. دعنا نعيد كتابة الدالة round_2 () كدالة لامدا ونستخدمها مع الدالة map () الموضحة أدناه.

    nums_sqrt_round_l = القائمة (الخريطة (عدد لامدا: الجولة (العدد ، 2) ، nums_sqrt)) الطباعة (nums_sqrt_round_l)

    كما هو موضح أدناه ، الناتج مطابق لما حصلنا عليه باستخدام الدالة round_2 ().

    انتاج |
    [5.48, 9.49, 5.83, 6.71, 9.85]

    كيفية استخدام وظيفة map () مع العديد من العناصر التكرارية

    وظيفة خريطة بايثون () ، موضحة بأمثلة 7

    في الأمثلة التي رأيناها ، طبقنا دالة على جميع الكائنات ذات عنصر واحد قابل للتكرار بالضبط.

    في بعض الأحيان قد يكون لدينا وظائف تأخذ حجتين أو أكثر. في هذه الحالة ، يتم تخزين كل وسيطة في قائمة أو بعض المجموعات المماثلة.

    يمكننا أيضًا استخدام وظيفة Python map () مع قوائم متعددة.

    # 1. ضع في اعتبارك منطقة الوظيفة التالية () التي تقبل الطول والعرض كمدخلات وتعيد المنطقة والطول * العرض.

    مساحة def (طول ، عرض): طول إرجاع * عرض

    يتم تخزين طول وعرض المستطيلات المختلفة في قائمتين منفصلتين ، الطول والعرض على التوالي.

    أطوال = [4,8,10,18]
    اتساع = [9,4,6,11]

    يمكننا استخدام وظيفة map () لتطبيق وظيفة المنطقة على القوائم أعلاه عن طريق تمرير كل من قوائم خطوط الطول والعرض.

    المناطق = قائمة (خريطة (مساحة ، أطوال ، عرض)) طباعة (مناطق)

    نظرًا لأن منطقة الوظيفة تقبل وسيطتين ، يتم استخدام قيم الطول والعرض من قوائم الطول والعرض على التوالي.

    انتاج |
    [36, 32, 60, 198]

    # 2. تحتوي وحدة الرياضيات في Python على وظيفة السجل التي تساعدنا في حساب لوغاريتم أي رقم لأي قاعدة.

    ملاحظة: يُرجع السجل (x ، الأساسي) قيمة السجل x إلى القاعدة المحددة بواسطة قاعدة القيمة ، السجل الأساسي x. إذا لم يتم تحديد الأساس ، فإن القيمة الأساسية الافتراضية هي e (يحسب السجل اللوغاريتم الطبيعي).

    في هذا المثال:

  • تتوافق القائمة x مع القيم التي تريد حساب اللوغاريتم لها.
  • تحتوي القائمة الأساسية على جميع القيم الأساسية لاستخدامها في حساب اللوغاريتم.
  • س = [2,6,12,10]
    القاعدة = [2,3,2,5]

    يمكننا استخدام دالة خريطة Python () مع math.log والقوائم و x و base للحصول على القائمة الجديدة log_x ، على النحو التالي.

    log_x = list (map (math.log، x، base)) طباعة (log_x)

    هنا هو الإخراج.

    انتاج |
    [1.0, 1.6309297535714573, 3.5849625007211565, 1.4306765580733933]

    استنتاج

    فيما يلي ملخص لما تعلمته في هذا البرنامج التعليمي:

  • تأخذ دالة خريطة بايثون () وسيطتين على الأقل: دالة وقابلة للتكرار ، مع خريطة بناء الجملة (وظيفة ، قابلة للتكرار).
  • يمكن أن تكون الوظيفة أي لغة بايثون صالحة للاستدعاء.
  • عندما تأخذ الدالة الوسيطات k ، استخدم الدالة map () مع الوظيفة وكل من وسيطات k في قابلة للتكرار.
  • بعد ذلك ، ستتعلم العمل مع المجموعات في بايثون.