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

هل يمكن أن تحتوي قائمة الفهم على مكررات تابعة؟

تم النشر بتاريخ 2024-12-21
تصفح:736

 Can List Comprehensions Have Dependent Iterators?

التكرارات المستقلة في فهم القائمة

في بايثون، تسمح عمليات فهم القائمة بحلقات تكرار متعددة. خذ بعين الاعتبار المثال التالي:

[(x, y) for x in a for y in b]

حيث a و b عبارة عن تسلسلات. يؤدي هذا الفهم إلى إنشاء أزواج من العناصر من المنتج الديكارتي لـ a وb.

هل يمكن للمكررات أن تكون تابعة؟

هل يمكن لمكرر واحد في فهم القائمة أن يشير إلى آخر؟ الإجابة هي نعم، والكود التالي يوضح ذلك:

[x for x in a for a in b]

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

مثال

إذا كان لدينا قائمة متداخلة a:

a = [[1, 2], [3, 4]]
سيؤدي فهم القائمة التالية إلى تسطيحها في قائمة واحدة:

[x for x in a for a in b]
النتيجة:

[1, 2, 3, 4]
[1, 2, 3, 4]

حل بديل باستخدام المولدات

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

text = (("Hi", "Steve!"), ("What's", "up?"))
gen = (word for sentence in text for word in sentence)
ينتج متغير الجيل الآن قائمة الكلمات المسطحة:

for word in gen:
    print(word)
الإخراج:

مرحبًا ستيف! ما أعلى؟
            
أحدث البرنامج التعليمي أكثر>

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

Copyright© 2022 湘ICP备2022001581号-3