مقدمة إلى دالة map() المضمنة في Python
تُعد الدالة map()
دالة قوية ومتعددة الاستخدامات مدمجة في Python تتيح لك تطبيق دالة على كل عنصر في كائن قابل للتكرار (مثل القائمة أو المجموعة) وإرجاع كائن خريطة، وهو مُكرر. هذه الدالة ضرورية لأي مبرمج Python يريد كتابة كود نظيف وفعال ومتوافق مع Python.
ما هي الدالة map()
؟
تأخذ الدالة map()
في بايثون وسيطتين أساسيتين: دالة وعنصر قابل للتكرار. وتطبق الدالة على جميع العناصر في العنصر القابل للتكرار وتعيد مُكررًا (كائن map
) يحتوي على النتائج.
الصيغة الخاصة بـ map()
هي:
map(function, iterable, ...)
هنا، function
هي الدالة التي سيتم تطبيقها على كل عنصر في العنصر القابل للتكرار، ويمكن أن يكون iterable
أي عنصر قابل للتكرار في Python، مثل القائمة أو المجموعة أو السلسلة. يمكنك أيضًا توفير عناصر قابلة للتكرار متعددة، ويجب أن تقبل الدالة عددًا من الوسائط يساوي عدد العناصر القابلة للتكرار.
الاستخدام الأساسي لـ map()
دعونا نرى مثالاً بسيطًا حيث نستخدم map()
لتربيع كل رقم في القائمة:
def square(x):
return x * x
numbers = [1, 2, 3, 4, 5]
squared_numbers = map(square, numbers)
print(list(squared_numbers)) # Output: [1, 4, 9, 16, 25]
في هذا المثال، يتم تطبيق الدالة square()
على كل عنصر من عناصر القائمة numbers
، ويتم إرجاع النتائج كمكرر جديد. نستخدم list()
لتحويل المتكرر إلى قائمة لسهولة العرض.
استخدام map()
مع وظائف Lambda
بدلاً من تعريف دالة منفصلة، يمكنك استخدام دالة لامدا لجعل الكود الخاص بك أكثر إيجازًا. دوال لامدا هي دوال صغيرة مجهولة الهوية يتم تعريفها باستخدام الكلمة الأساسية lambda
. إليك كيفية استخدام دالة لامدا مع map()
:
numbers = [1, 2, 3, 4, 5]
squared_numbers = map(lambda x: x * x, numbers)
print(list(squared_numbers)) # Output: [1, 4, 9, 16, 25]
في هذه الحالة، نقوم بتعريف الوظيفة مباشرة داخل استدعاء map()
، مما يجعل الكود أقصر وأكثر قابلية للقراءة.
تعيين عناصر قابلة للتكرار متعددة
يمكن أن تأخذ الدالة map()
أيضًا أكثر من عنصر قابل للتكرار. في مثل هذه الحالات، يجب أن تحتوي الدالة المقدمة على عدد من الوسائط يساوي عدد العناصر القابلة للتكرار. ثم ستطبق الدالة map()
الدالة باستخدام العناصر المقابلة من كل عنصر قابل للتكرار.
على سبيل المثال، دعنا نضيف عناصر متطابقة من قائمتين:
numbers1 = [1, 2, 3]
numbers2 = [4, 5, 6]
summed_numbers = map(lambda x, y: x + y, numbers1, numbers2)
print(list(summed_numbers)) # Output: [5, 7, 9]
هنا، تأخذ دالة lambda وسيطتين، x
وy
، والتي تتوافق مع عناصر من numbers1
وnumbers2
على التوالي، وترجع مجموعهما.
تحويل الكائن map
إلى أنواع بيانات أخرى
تعيد الدالة map()
مُكررًا، وهو كائن يمكنك تكراره ولكنه ليس قائمة بحد ذاته. لاستخدام النتيجة في سياقات مختلفة، قد ترغب في تحويلها إلى نوع بيانات آخر مثل القائمة أو المجموعة أو المجموعة:
numbers = [1, 2, 3, 4, 5]
squared_numbers = map(lambda x: x * x, numbers)
print(list(squared_numbers)) # Convert to list: [1, 4, 9, 16, 25]
print(tuple(squared_numbers)) # Convert to tuple: ()
print(set(squared_numbers)) # Convert to set: set()
لاحظ أنه بمجرد استنفاد المُكرر (على سبيل المثال، عن طريق تحويله إلى قائمة)، لا يمكن إعادة استخدامه. وبالتالي، فإن التحويلات اللاحقة ستعيد مجموعات فارغة.
التطبيقات العملية لـ map()
تُعد دالة map()
مفيدة بشكل خاص في معالجة البيانات ونماذج البرمجة الوظيفية. وفيما يلي بعض التطبيقات الشائعة:
- تطبيق دالة على كل عنصر في القائمة أو المصفوفة (على سبيل المثال، تطبيع البيانات).
- تحويل أنواع البيانات (على سبيل المثال، تحويل قائمة من السلاسل إلى قائمة من الأعداد الصحيحة).
- دمج عناصر قابلة للتكرار بشكل متوازي (على سبيل المثال، عمليات على كل عنصر على قائمتين).
- تنظيف البيانات أو تحويلها (على سبيل المثال، تقليم المسافات البيضاء أو تطبيق التحويلات).
خاتمة
تُعد دالة map()
أداة متعددة الاستخدامات وقوية في Python تبسط تطبيق الدوال على العناصر القابلة للتكرار. من خلال فهم كيفية استخدام map()
بشكل فعال، يمكنك كتابة كود أنظف وأكثر كفاءة وأكثر توافقًا مع Python. سواء كنت مبتدئًا أو مطورًا متمرسًا، فإن إتقان map()
سيساعدك في مجموعة واسعة من سيناريوهات البرمجة.