Python Programming

إزالة الازدواجية الفعّالة للقوائم في بايثون

Spread the love

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

محتويات

إزالة التكرار من القائمة (غير مرتبة)

في الحالات التي لا يكون فيها ترتيب العناصر مهمًا، فإن الاستفادة من نوع set المدمج في بايثون يوفر الحل الأسرع. تخزن المجموعات بشكل أساسي العناصر الفريدة فقط. إن تحويل قائمة إلى مجموعة ثم إلى قائمة مرة أخرى يُزيل التكرارات بفعالية.

my_list = [1, 2, 2, 3, 4, 4, 5, 1]
unique_list = list(set(my_list))
print(unique_list)  # الإخراج: [1, 2, 3, 4, 5] (قد يختلف الترتيب)

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

إزالة التكرار من القائمة (مرتبة)

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

my_list = [1, 2, 2, 3, 4, 4, 5, 1]
seen = set()
unique_list = []

for item in my_list:
    if item not in seen:
        unique_list.append(item)
        seen.add(item)

print(unique_list)  # الإخراج: [1, 2, 3, 4, 5] (تم الحفاظ على الترتيب الأصلي)

تكرر هذه الطريقة مرة واحدة، باستخدام مجموعة seen للبحث الفعال في المتوسط O(1)، مما يضمن أداءً جيدًا حتى مع القوائم الكبيرة. الميزة الرئيسية هي الحفاظ على الترتيب الأصلي.

اختيار الطريقة المناسبة:

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

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *