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