توفر بايثون عدة طرق لدمج القوائم، اعتمادًا على ما إذا كنت ترغب في الاحتفاظ بالمدخلات المكررة وما إذا كان الترتيب مهمًا. يستكشف هذا الدليل تقنيات متنوعة للتعامل بكفاءة مع عمليات اتحاد القوائم.
محتويات
الاتحاد مع عناصر مكررة
أبسط طريقة لدمج قائمتين، مع الحفاظ على جميع العناصر وتكراراتها، هي استخدام عامل التشغيل +
:
list1 = [1, 2, 2, 3]
list2 = [3, 4, 2]
union_list = list1 + list2
print(union_list) # الإخراج: [1, 2, 2, 3, 3, 4, 2]
الاتحاد المُرتّب
للحصول على اتحاد مرتب، اجمع عامل التشغيل +
مع دالة sorted()
:
list1 = [1, 2, 2, 3]
list2 = [3, 4, 2]
union_list = sorted(list1 + list2)
print(union_list) # الإخراج: [1, 2, 2, 2, 3, 3, 4]
الاتحاد بدون عناصر مكررة
لإنشاء اتحاد بدون عناصر مكررة، استخدم المجموعات:
list1 = [1, 2, 2, 3]
list2 = [3, 4, 2]
union_set = set(list1) | set(list2) # أو set(list1).union(list2)
union_list = list(union_set) # تحويلها مرة أخرى إلى قائمة إذا لزم الأمر
print(union_list) # الإخراج: [1, 2, 3, 4] (قد يختلف الترتيب)
تقوم المجموعات تلقائيًا بإزالة التكرارات. لاحظ أن ترتيب العناصر في القائمة الناتجة قد لا يكون هو نفسه في القوائم الأصلية.
اتحاد قوائم متعددة
بالنسبة لأكثر من قائمتين، يبقى نهج المجموعات فعالاً:
list1 = [1, 2, 3]
list2 = [3, 4, 5]
list3 = [5, 6, 1]
union_set = set(list1) | set(list2) | set(list3)
union_list = list(union_set)
print(union_list) # الإخراج: [1, 2, 3, 4, 5, 6] (قد يختلف الترتيب)
#حل أكثر قابلية للتطوير باستخدام reduce:
from functools import reduce
union_list = list(reduce(lambda x,y: x | y, [set(l) for l in [list1, list2, list3]]))
print(union_list) # الإخراج: [1, 2, 3, 4, 5, 6] (قد يختلف الترتيب)
توفر دالة reduce
حلاً أكثر إيجازًا وقابلية للتطوير للعديد من القوائم. تذكر أن ترتيب العناصر قد لا يتم الحفاظ عليه؛ استخدم sorted()
إذا كان الترتيب مهمًا.