في بايثون، يعد تحديد ما إذا كانت العناصر من قائمة موجودة في قائمة أخرى أمرًا ضروريًا لمهام معالجة البيانات المختلفة. تستكشف هذه المقالة طرقًا مختلفة لاختبار هذا التداخل، وتقييم كفاءتها، وتقديم أفضل الممارسات.
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 للمجموعات المجمدة لتحديد ما إذا كان لديهم أي عناصر مشتركة. إذا لم يفعلوا ذلك، فالنتيجة كاذبة؛ خلاف ذلك، فهو صحيح.
أسوأ حالة:
في معظم الحالات، يكون التقاطع منفصلاً الطريقة هي الأسرع لأنها تستفيد من عمليات فحص العضوية المحددة في الوقت الثابت.
أفضل حالة للتعبير المولد:
العوامل التي يجب مراعاتها:
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3