"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > كيف يمكنني التحقق مما إذا كانت العناصر من قائمة واحدة تتداخل مع أخرى في بايثون؟

كيف يمكنني التحقق مما إذا كانت العناصر من قائمة واحدة تتداخل مع أخرى في بايثون؟

تم النشر بتاريخ 2024-11-08
تصفح:131

How Do I Check if Elements from One List Overlap with Another in Python?

تداخل قائمة الاختبار في بايثون

مقدمة

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

مناهج

1. تعبير المولد

any(i in a for i in b)

تتكرر هذه الطريقة من خلال قائمة واحدة وتتحقق من العضوية في القائمة الأخرى، وتعيد True إذا كانت المطابقة وجد. تعقيدها الزمني هو O(n)، حيث n هو طول القائمة الأكبر.

2. تعيين التقاطع

bool(set(a) & set(b))

يقوم هذا الأسلوب بتحويل كلتا القائمتين إلى مجموعات ويجد تقاطعهما. إذا كان التقاطع غير فارغ، فإنه يُرجع True. أسوأ تعقيد زمني لهذا هو O(n m)، حيث n وm هما طول القوائم.

3. تقاطع المجموعة الهجينة

a = set(a)
any(i in a for i in b)

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

4. طريقة منفصلة

not set(a).isdisjoint(b)

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

مقارنة الكفاءة

أسوأ حالة:

  • تعبير المولد: O(n)
  • تعيين التقاطع: O(n m)
  • تقاطع المجموعة الهجينة: O(n m)
  • طريقة منفصلة: O(1)

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

أفضل حالة للتعبير المولد:

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

العوامل التي يجب مراعاتها:

    حجم القائمة
  • توزيع العناصر داخل القوائم
  • تكرار العناصر المشتركة
أفضل الممارسات

    بالنسبة للقوائم الصغيرة (إذا كانت هياكل القائمة قابلة للتنبؤ بها (على سبيل المثال، مصنفة)، فقد يكون تعبير المولد أسرع.
  • عندما يكون هناك اختلاف كبير في الحجم بين القوائم، استخدم الأسلوب isdisjoint مع القائمة الأصغر باعتبارها القائمة الوسيطة الأولى.
  • بالنسبة للقوائم التي تحتوي على عدد قليل من العناصر المشتركة أو لا تحتوي على عناصر مشتركة، يكون الأسلوب isdisjoint أكثر كفاءة بشكل عام.
بيان الافراج يتم استنساخ هذه المقالة في: 1729382599 إذا كان هناك أي انتهاك ، فيرجى الاتصال بـ [email protected] لحذفه.
أحدث البرنامج التعليمي أكثر>

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

Copyright© 2022 湘ICP备2022001581号-3