تتميز قوائم بايثون بقدرتها على التنوع، إلا أن معالجة العناصر المكررة بكفاءة تُعد مهمة برمجية شائعة. يستعرض هذا المقال طريقتين فعالتين لإزالة المكررات من قائمة بايثون: الاستفادة من دالة set()
المدمجة من أجل السرعة، واستخدام OrderedDict
للحفاظ على الترتيب الأصلي للعناصر.
جدول المحتويات
إزالة المكررات باستخدام طريقة set()
أسرع طريقة لإزالة المكررات هي استخدام دالة set()
. المجموعات هي مجموعات غير مرتبة من عناصر فريدة. يؤدي تحويل القائمة إلى مجموعة إلى إزالة المكررات تلقائيًا. ومع ذلك، فإن هذه الطريقة تغير الترتيب الأصلي.
my_list = [1, 2, 2, 3, 4, 4, 5, 1]
# تحويل القائمة إلى مجموعة لإزالة المكررات
unique_elements = set(my_list)
# تحويل المجموعة مرة أخرى إلى قائمة (قد يتغير الترتيب)
unique_list = list(unique_elements)
print(f"القائمة الأصلية: {my_list}")
print(f"القائمة بعد إزالة المكررات: {unique_list}")
النتيجة:
القائمة الأصلية: [1, 2, 2, 3, 4, 4, 5, 1]
القائمة بعد إزالة المكررات: [1, 2, 3, 4, 5]
لاحظ التغيير المحتمل في ترتيب العناصر.
الحفاظ على الترتيب باستخدام OrderedDict
لإزالة المكررات مع الحفاظ على الترتيب الأصلي، استخدم OrderedDict
من وحدة collections
. يحافظ OrderedDict
على ترتيب الإدراج.
from collections import OrderedDict
my_list = [1, 2, 2, 3, 4, 4, 5, 1]
# استخدام OrderedDict لإزالة المكررات مع الحفاظ على الترتيب
unique_list_ordered = list(OrderedDict.fromkeys(my_list))
print(f"القائمة الأصلية: {my_list}")
print(f"القائمة بعد إزالة المكررات مع الحفاظ على الترتيب: {unique_list_ordered}")
النتيجة:
القائمة الأصلية: [1, 2, 2, 3, 4, 4, 5, 1]
القائمة بعد إزالة المكررات مع الحفاظ على الترتيب: [1, 2, 3, 4, 5]
الترتيب مطابق للقائمة المدخلة.
اختيار النهج الأمثل
إذا لم يكن الترتيب ذا أهمية، فإن طريقة set()
توفر سرعة أفضل. إذا كان الحفاظ على الترتيب الأصلي ذا أهمية قصوى، فإن OrderedDict
هو الخيار الأفضل، على الرغم من أنه قد يكون أبطأ قليلاً للقوائم الكبيرة جدًا. بالنسبة لمعظم التطبيقات، سيكون فرق الأداء ضئيلاً. اختر الطريقة التي تتوافق بشكل أفضل مع احتياجاتك.