الأخبار التكنولوجية والاستعراضات والنصائح!

5 طرق لإزالة التكرارات من قوائم بايثون

في هذا البرنامج التعليمي ، ستتعلم كيفية إزالة التكرارات من قوائم بايثون.

عند العمل مع القوائم في Python ، قد تحتاج أحيانًا إلى العمل مع العناصر الفريدة فقط في القائمة – عن طريق إزالة التكرارات.

هناك عدة طرق مختلفة للقيام بذلك. في هذا البرنامج التعليمي ، سنستعرض خمس تقنيات من هذا القبيل.

أساسيات قوائم بايثون

لنبدأ مناقشتنا بمراجعة أساسيات قوائم بايثون.

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

إذن كيف تحتفظ بالعناصر الفريدة فقط وتزيل العناصر المكررة أو المكررة؟

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

سوف نتعلم هذه بالتفصيل في هذا البرنامج التعليمي.

طرق إزالة التكرارات من قوائم بايثون

لنأخذ مثالاً من الحياة الواقعية. افترض أنك في حفلة عيد ميلاد صديقك

في مجموعة الحلوى المعروضة ، سترى أن هناك بعض العناصر متكررة. أنت الآن تريد إزالة هذه التكرارات من قائمة الحلوى.

لنقم بإنشاء قائمة حلوى تحتوي على جميع العناصر الموجودة في الصورة أعلاه.

حلويات = [“cupcake”,”candy”,”lollipop”,”cake”,”lollipop”,”cheesecake”,”candy”,”cupcake”]

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

كرر على قوائم بايثون لإزالة التكرارات

إن أبسط طريقة هي إنشاء قائمة جديدة تحتوي على كل عنصر مرة واحدة بالضبط.

اقرأ من خلال خلية الشفرة أدناه:

فريد_حلويات = []
للحلويات في الحلويات: إذا كانت الحلوة ليست في حلويات فريدة: unique_sweets.append (sweet) print (unique_sweets) # Output
[‘cupcake’, ‘candy’, ‘lollipop’, ‘cake’, ‘cheesecake’]

  • نقوم بتهيئة قائمة فارغة unique_sweets.
  • بينما ننتقل إلى قائمة الحلوى ، نصل إلى كل قطعة حلوى.
  • إذا لم تكن الحلويات موجودة بالفعل في قائمة الحلويات الفريدة ، فإننا نضيفها إلى نهاية قائمة الحلويات الفريدة باستخدام طريقة .append ().
  • لنفترض أنك واجهت عنصرًا متكررًا ، مثل التكرار الثاني لكلمة “حلوى” في قائمة الحلوى. لم تتم إضافة هذا إلى قائمة الحلويات الفريدة لأنه موجود بالفعل: الحلو ليس في حلويات فريدة يتم تقييمه إلى False للتكرار الثاني لكل من “كب كيك” و “حلوى”.

    لذلك ، في هذه الطريقة ، يظهر كل عنصر مرة واحدة بالضبط في قائمة الحلوى الفريدة – دون أي تكرار.

    استخدم List Comprehension لإزالة التكرارات

    يمكنك أيضًا استخدام قائمة الفهم لملء قائمة الحلويات الفريدة.

    هل تريد تحسين أساسيات فهم القائمة؟

    ▶ ️ تحقق من البرنامج التعليمي لفهم قائمة Python.

    دعنا نستخدم تعبير list comprehension: [output for item in iterable if condition is True] للكتابة عن الحلقات أعلاه باختصار.

    فريد_حلويات = []
    [unique_sweets.append(sweet) for sweet in sweets if sweet not in unique_sweets]

    print (unique_sweets) # الإخراج
    [‘cupcake’, ‘candy’, ‘lollipop’, ‘cake’, ‘cheesecake’]

    حتى إذا قمت بإنشاء قائمة جديدة ، فلن تقوم بتعبئة القائمة التي تم إنشاؤها بالقيم. هذا لأن الإخراج هو العملية. append () إلى قائمة الحلويات الفريدة.

    لإزالة التكرارات من قوائم Python ، يمكنك أيضًا استخدام طرق القائمة المضمنة ، وسنغطي ذلك في القسم التالي.

    استخدم أساليب القائمة المضمنة لإزالة التكرارات

    يمكنك استخدام أساليب قائمة Python .count () و .remove () لإزالة العناصر المكررة.

    – باستخدام بناء الجملة list.count (القيمة) ، ترجع طريقة .count () عدد المرات التي تظهر فيها القيمة في القائمة. لذا فإن الرقم المقابل للعناصر المكررة سيكون أكبر من 1.

    – list.remove (القيمة) يزيل التواجد الأول للقيمة من القائمة.

    باستخدام ما سبق ، لدينا الكود التالي.

    للحلويات في الحلويات: # تحقق مما إذا كان عدد الحلويات> 1 (عنصر مكرر) إذا كان عدد الحلويات (حلو)> 1: # إذا كان هذا صحيحًا ، قم بإزالة التواجد الأول للحلويات الحلوة. انتاج |
    [‘cake’, ‘lollipop’, ‘cheesecake’, ‘candy’, ‘cupcake’]

    نظرًا لأن أسلوب .remove () يزيل التواجد الأول لقيمة فقط ، فلا يمكنك استخدامه لإزالة الكائنات التي تحدث أكثر من مرتين.

  • إذا تم تكرار كائن معين (يحدث مرتين بالضبط) ، فإن هذه الطريقة تزيل التكرار الأول.
  • إذا تم تكرار كائن معين K مرة ، فستظل عمليات التكرار K-1 بعد تشغيل الكود أعلاه.
  • لكن بشكل عام ، عندما نقول مكررات ، فإننا نشير عادةً إلى كل التكرارات.

    للتعامل مع هذه الحالة ، يمكنك تعديل الحلقة أعلاه لإزالة كل التكرار باستثناء مرة واحدة. بدلاً من استخدام شرط if لفحص عدد عنصر معين ، يمكنك تشغيل حلقة while لإزالة التكرارات بشكل متكرر حتى يصبح عدد كل عنصر في القائمة 1.

    تحتوي قائمة الحلوى الآن على مكررين لكلمة “كب كيك” و 3 تكرارات “حلوى”.

    حلويات = [“cupcake”,”candy”,”lollipop”,”cake”,”lollipop”,”candy”,”cheesecake”,”candy”,”cupcake”]

    يمكنك استخدام حلقة while لإزالة التكرار ، كما هو موضح أدناه. تستمر الحلقة while في التنفيذ طالما أن عدد الحلويات في الحلوى أكبر من 1. عندما يتبقى تكرار واحد فقط ، يصبح الشرط sweets.count (sweet)> 1 خطأ ، وتنتقل الحلقة إلى العنصر التالي.

    للحلويات في الحلويات: # تحقق مما إذا كان عدد الحلويات> 1 (عنصر مكرر) بينما (sweets.count (حلو)> 1): # قم بإزالة التواجد الأول للحلويات بشكل متكرر حتى يتبقى حدوث واحد. إزالة (حلو) طباعة (حلويات) # الإخراج
    [‘cake’, ‘lollipop’, ‘cheesecake’, ‘candy’, ‘cupcake’]

    ومع ذلك ، قد لا يكون استخدام الحلقات المتداخلة فعالاً للغاية ، لذلك قد ترغب في التفكير في استخدام أحد الأساليب الأخرى التي تمت مناقشتها إذا كنت تعمل مع قوائم كبيرة.

    لقد تعلمنا حتى الآن ما يلي:

  • طرق إزالة التكرارات من قوائم بايثون – عن طريق إنشاء قوائم جديدة – تحتوي على عناصر فريدة فقط
  • طرق القائمة المضمنة .count () و. remove () لتعديل القائمة في مكانها
  • هناك بعض هياكل بيانات Python المضمنة التي تتطلب أن تكون جميع القيم فريدة – دون تكرار. لذلك ، يمكننا إرسال قائمة Python إلى إحدى هياكل البيانات هذه لإزالة التكرارات. ثم قم بتحويلها مرة أخرى إلى قائمة. سوف نتعلم كيفية القيام بذلك في الأقسام القادمة.

    إرسال قائمة Python إلى مصفوفة لإزالة التكرارات

    مصفوفات Python عبارة عن مجموعات من العناصر الفريدة من نوعها. لذلك ، فإن عدد العناصر الموجودة في المجموعة (المعطاة بواسطة len ()) يساوي عدد العناصر الفريدة الموجودة.

    يمكنك تحويل أي لغة بايثون قابلة للتكرار إلى مجموعة باستخدام الصيغة: مجموعة (قابلة للتكرار).

    الآن ، دعنا نضع قائمة الحلوى في مصفوفة ونفحص النتيجة.

    set (sweets) # Output {‘cake’، ‘candy’، ‘cheesecake’، ‘cupcake’، ‘lollipop’}

    من الإخراج في خلية الكود أعلاه ، نرى أنه يتم عرض كل عنصر مرة واحدة بالضبط ، وتمت إزالة التكرارات.

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

    الآن بعد أن أزلنا التكرارات عن طريق تحويل القائمة إلى مصفوفة ، يمكننا مرة أخرى تحويلها إلى قائمة ، كما هو موضح أدناه.

    unique_sweets = list (set (sweets)) print (unique_sweets) # Output
    [‘cake’, ‘cheesecake’, ‘candy’, ‘cupcake’, ‘lollipop’]

    استخدم عناصر القائمة كمفاتيح القاموس لإزالة التكرارات

    قاموس Python عبارة عن مجموعة من أزواج المفتاح والقيمة حيث تحدد المفاتيح القيم بشكل فريد.

    يمكنك إنشاء قاموس Python باستخدام طريقة .fromkeys () بالصيغة التالية: هنا ، المفاتيح والقيم هي عناصر متكررة تحتوي على مفاتيح وقيم القاموس.

  • key هي معلمة مطلوبة ، ويمكن أن تكون أي لغة Python قابلة للتكرار تتوافق مع المفاتيح الموجودة في القاموس.
  • القيمة هي معلمة اختيارية. إذا لم تحدد القيم القابلة للتكرار ، فسيتم استخدام القيمة الافتراضية بلا.
  • بدون تحديد القيم ، يُرجعict.fromkeys (حلويات) قاموس Python مع تعيين القيم على None – القيمة الافتراضية. تشرح خلية الشفرة أدناه هذا.

    ict.fromkeys (حلويات) # Output {‘cake’: None، ‘candy’: None، ‘cheesecake’: None، ‘cupcake’: None، ‘lollipop’: None}

    كما هو الحال مع القسم السابق ، يمكننا مرة أخرى تحويل القاموس إلى قائمة ، كما هو موضح أدناه.

    unique_sweets = list (ict.fromkeys (sweets)) print (unique_sweets) # Output
    [‘cupcake’, ‘candy’, ‘lollipop’, ‘cake’, ‘cheesecake’]

    من الناتج أعلاه ، يمكننا أن نرى أنه تمت إزالة العناصر المكررة من قائمة الحلوى.

    ملخص 👩‍🏫

    فيما يلي ملخص للطرق المختلفة التي يمكنك استخدامها لإزالة العناصر المكررة أو التكرارات من قوائم بايثون.

  • استخدم طريقة قائمة Python. append () لإضافة عناصر غير متكررة إلى قائمة جديدة. تحتوي القائمة الجديدة على كل عنصر في القائمة الأصلية مرة واحدة بالضبط ، مع إزالة جميع التكرارات. يمكنك أيضًا القيام بذلك باستخدام قائمة الفهم.
  • استخدم الطرق المضمنة .count () و .remove () لإزالة العناصر التي تحدث مرتين بالضبط. يمكن وضع نفس الشيء في حلقة while لإزالة جميع الأحداث الأخرى.
  • قم بإرسال قائمة Python إلى مصفوفة للاحتفاظ بالعناصر الفريدة فقط.
  • استخدم dict.fromkeys (قائمة) لإزالة أي تكرارات من القائمة حيث يجب ألا يكون هناك مفاتيح مكررة في القاموس.
  • ثم تحقق من مشاريع Python للتدرب والتعلم. أو تعرف على كيفية العثور على فهرس عنصر في قوائم بايثون. حظا سعيدا في التعلم الخاص بك!