دمج القوائم والمجموعات باستخدام دالة zip() في Python

تمت الكتابة بواسطة: عبد الحكيم

تارخ آخر تحديث: 20 سبتمبر 2024

محتوى المقال

دمج القوائم والمجموعات باستخدام دالة zip() في Python

في كثير من الأحيان، قد تحتاج في لغة البرمجة Python إلى دمج أو "تزيين" عدة قوائم أو مجموعات معًا بطريقة تجعل كل عنصر من القائمة الأولى يقترن مع العنصر المقابل له في القوائم أو المجموعات الأخرى. دالة zip() المدمجة في Python توفر طريقة سهلة وفعالة لتحقيق هذا الهدف.

ما هي دالة zip() في Python؟

تُستخدم دالة zip() لدمج عدة قوائم أو مجموعات أو هياكل بيانات قابلة للتكرار (مثل tuples) معًا. تقوم هذه الدالة بإنشاء كائن يحتوي على أزواج من العناصر المأخوذة من كل هيكل بيانات. بمعنى آخر، تقوم بربط كل عنصر من القائمة الأولى مع العنصر المقابل له من القائمة الثانية، وهكذا.

كيفية استخدام zip() لدمج القوائم

لاستخدام zip()، يكفي تمرير القوائم أو المجموعات المراد دمجها كمعاملات. كل عنصر في القائمة الأولى يتم إقرانه مع العنصر المقابل له في القائمة الثانية. إذا كانت القوائم تحتوي على أطوال مختلفة، سيتم استخدام الطول الأصغر لجميع القوائم.

مثال 1: دمج قائمتين باستخدام zip()

names = ['علي', 'محمد', 'سارة']
grades = [85, 90, 88]

zipped_list = zip(names, grades)
zipped_list = list(zipped_list) # تحويل الكائن zip إلى قائمة

print(zipped_list) # الناتج: [('علي', 85), ('محمد', 90), ('سارة', 88)]

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

دمج أكثر من قائمتين باستخدام zip()

يمكنك استخدام zip() لدمج أكثر من قائمتين في وقت واحد. يتم إقران العناصر من جميع القوائم معًا في مجموعة ثلاثية أو أكثر.

مثال 2: دمج ثلاث قوائم باستخدام zip()

names = ['علي', 'محمد', 'سارة']
grades = [85, 90, 88]
ages = [20, 22, 21]

zipped_list = zip(names, grades, ages)
zipped_list = list(zipped_list)

print(zipped_list) # الناتج: [('علي', 85, 20), ('محمد', 90, 22), ('سارة', 88, 21)]

في هذا المثال، يتم دمج ثلاث قوائم: أسماء الطلاب، درجاتهم، وأعمارهم. كل طالب مقترن بدرجته وعمره.

ماذا يحدث عند وجود قوائم بأطوال مختلفة؟

عند دمج قوائم باستخدام zip() وكانت القوائم ذات أطوال مختلفة، ستتوقف دالة zip() عند نهاية أقصر قائمة، وستتجاهل العناصر الزائدة في القوائم الأطول.

مثال 3: دمج قوائم بأطوال غير متساوية

names = ['علي', 'محمد']
grades = [85, 90, 88]

zipped_list = zip(names, grades)
zipped_list = list(zipped_list)

print(zipped_list) # الناتج: [('علي', 85), ('محمد', 90)]

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

استخدام zip() مع المجموعات (tuples)

تمامًا كما هو الحال مع القوائم، يمكن استخدام zip() مع المجموعات (tuples). يمكن دمج المجموعات مع القوائم أو مع مجموعات أخرى.

مثال 4: دمج القوائم والمجموعات معًا

names = ['علي', 'محمد']
grades = (85, 90)

zipped_list = zip(names, grades)
zipped_list = list(zipped_list)

print(zipped_list) # الناتج: [('علي', 85), ('محمد', 90)]

في هذا المثال، تم دمج قائمة names مع مجموعة grades باستخدام zip()، مما أعطى نتيجة مشابهة لدمج القوائم.

عكس عملية zip()

من الممكن أيضًا عكس عملية zip() عن طريق استخدام معامل النجمة *. هذا يمكن أن يكون مفيدًا عندما ترغب في فك أزواج العناصر الناتجة من zip().

مثال 5: عكس عملية zip()

zipped_list = [('علي', 85), ('محمد', 90)]
names, grades = zip(*zipped_list)

print(list(names)) # الناتج: ['علي', 'محمد']
print(list(grades)) # الناتج: [85, 90]

في هذا المثال، تم عكس عملية zip() واستخراج القيم الأصلية لقائمة names وقائمة grades.

تطبيقات عملية لدالة zip()

تُعد دالة zip() مفيدة في العديد من التطبيقات البرمجية اليومية. إليك بعض الأمثلة على التطبيقات العملية التي يمكن أن تستخدم فيها zip():

  • التعامل مع البيانات: عند التعامل مع جداول البيانات أو البيانات المصفوفة، يمكنك استخدام zip() لجمع البيانات المتوافقة معًا.
  • تحويل البيانات إلى قواميس: يمكنك دمج قائمتين لإنشاء قاموس (Dictionary) حيث تصبح القائمة الأولى هي المفاتيح والثانية هي القيم.

مثال 6: تحويل قائمتين إلى قاموس باستخدام zip()

names = ['علي', 'محمد']
grades = [85, 90]

students_dict = dict(zip(names, grades))

print(students_dict) # الناتج: {'علي': 85, 'محمد': 90}

في هذا المثال، تم استخدام zip() لدمج قائمتين ثم تحويلهما إلى قاموس يحتوي على الأسماء كمفاتيح والدرجات كقيم.

الخلاصة

تُعد دالة zip() في Python أداة قوية وسهلة الاستخدام لدمج القوائم والمجموعات. سواء كنت ترغب في دمج قائمتين أو أكثر، أو عكس عملية الدمج، فإن zip() توفر لك طريقة مرنة وفعالة للتعامل مع البيانات. يمكن استخدامها في تطبيقات متعددة مثل معالجة البيانات وتحويلها إلى قواميس أو التعامل مع المصفوفات بشكل منظم.

طور مهاراتك: مقالات يجب قراءتها في البرمجة