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

كيفية التحقق مما إذا كان المولد فارغًا في بايثون؟

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

How to Check if a Generator is Empty in Python?

اكتشاف تهيئة المولد الفارغة

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

مواجهة التحدي

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

التنفيذ المقترح

يمكن تنفيذ إحدى هذه الوظائف، المسماة النظرة الخاطفة، على النحو التالي:

def peek(iterable):
    try:
        first = next(iterable)
    except StopIteration:
        return None
    return first, itertools.chain([first], iterable)

استخدام النظرة الخاطفة لتحديد المولدات الفارغة

لتحديد ما إذا كان المولد فارغًا، يمكنك استخدام النظرة الخاطفة تعمل بالطريقة التالية:

res = peek(mysequence)
if res is None:
    # sequence is empty.  Do stuff.
else:
    first, mysequence = res
    # Do something with first, maybe?
    # Then iterate over the sequence:
    for element in mysequence:
        # etc.
في هذا المثال، إذا كان المولد فارغًا، فسترجع الدالة الخاطفة لا شيء وسيكون شرط if صحيحًا. وإلا سيتم تنفيذ الكتلة else. من خلال استخدام هذا الأسلوب، يمكنك اكتشاف ما إذا كان المولد فارغًا منذ بدايته بشكل فعال.

بيان الافراج يتم استنساخ هذه المقالة في: 1729390097 إذا كان هناك أي انتهاك ، فيرجى الاتصال بـ [email protected] لحذفه.
أحدث البرنامج التعليمي أكثر>

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

Copyright© 2022 湘ICP备2022001581号-3