يريد مؤلف المذكرة ، الذي ننشره اليوم ، التحدث عن بعض ميزات استخدام الحلقات في بيثون.

حلقة
for
هي واحدة من حجر الزاوية في البرمجة. يتعرف المبرمجون المستقبليون على هذه الدورات في بداية دراستهم ، وبعد التعارف الأول ، يستخدمونها باستمرار.
إذا بدأت التطوير في Python ، ولديك خبرة في العمل مع لغة برمجة أخرى شائعة ، مثل PHP أو JavaScript ، فأنت على دراية بتقنية استخدام متغير العداد الذي يخزن ، على سبيل المثال ، فهرس العنصر الحالي للصفيف الجاري معالجته في حلقة. فيما يلي مثال على العمل مع حلقة مكتوبة بلغة JavaScript:
let scores = [54,67,48,99,27]; for(const i=0; i < scores.length; i++) { console.log(i, scores[i]); }
عند العمل مع الحلقات ، من المهم للغاية أن نفهم أن هذه الحلقات لا تتكرر على المصفوفات. إنها تعطي المبرمج آلية للعمل مع متغير العداد ، والذي يستخدم للوصول إلى عناصر المصفوفات التي تمت معالجتها.
في المثال السابق ، لا يمتلك المتغير
i
أي علاقة واضحة بمجموعة
scores
. إنه يخزن فقط رقمًا معينًا ، والذي يزيد بمقدار 1 في كل تكرار للحلقة ، والذي ، كما اتضح ، مناسب للوصول المتسلسل إلى عناصر الصفيف بواسطة مؤشراتها.
الطريقة القديمة (غير الناجحة) للعمل مع المصفوفات
بيثون لا يوجد لديه التقليدية للحلقات مثل تلك المذكورة أعلاه. صحيح ، إذا كنت مثلي ، فستكون رغبتك الأولى في إتقان بيثون هي إيجاد طريقة لإنشاء حلقة مألوفة ومريحة لك للعمل بها.
نتيجة لذلك ، يمكنك اكتشاف وظيفة
range()
والكتابة في بيثون شيء مشابه لما يلي:
scores = [54,67,48,99,27] for i in range(len(scores)): print(i, scores[i]) """ 0 54 1 67 2 48 3 99 4 27 """
المشكلة في هذه الحلقة هي أنها لا تناسب إيديولوجيا بايثون جيدًا. في ذلك ، لا نقوم بالتكرار على القائمة ، ولكن بدلاً من ذلك ، نستخدم المتغير الإضافي
i
للوصول إلى عناصر القائمة.
في الواقع ، حتى في JavaScript ، هناك طرق تسمح لك بالتكرار عبر صفائف ، إذا جاز التعبير ، دون وسطاء. هذه
forEach
.
باستخدام دالة التعداد ()
إذا احتجت إلى تتبع "فهرس عنصر" بشكل كافٍ في حلقة بيثون ، فقد تكون وظيفة
enumerate()
التي تسمح لك "بإعادة حساب" الكائن القابل للتكرار ، مناسبة. يمكن استخدامه ليس فقط لمعالجة القوائم ، ولكن أيضًا للعمل مع أنواع البيانات الأخرى - بالسلاسل ، tuples ، القواميس.
تأخذ هذه الوظيفة وسيطين: كائن قابل للتكرار وقيمة عداد أولية اختيارية.
إذا لم يتم تمرير القيمة الأولية لعداد
enumerate()
، فسيتم تعيينه افتراضيًا إلى
0
. تقوم الوظيفة بإنشاء كائن يولد tuples يتكون من فهرس العنصر وهذا العنصر نفسه.
scores = [54,67,48,99,27] for i, score in enumerate(scores): print(i, score)
تحولت هذه الشفرة إلى أنظف كثيرًا من الكود الموجود في المثال السابق. لقد تركنا العمل مع قائمة الفهارس ، ونكررها على القيم نفسها ، ونحصل على إمكانية الوصول المباشر إليها في الحلقة
for,
ونرى القيم التي نعمل معها في إعلان الدورة.
فيما يلي ميزة لطيفة ستجذب أولئك الذين يحتاجون إلى عرض قوائم مرقمة بحيث لا يكون رقم العنصر الأول هو
0
، وفقًا لفهرسه ، ولكن
1
. عادةً ، للقيام بذلك ، يجب عليك تغيير الرقم المعروض للعنصر. على سبيل المثال - مثل هذا:
i + 1
. عند استخدام دالة
enumerate()
، يكفي أن تمر عليها ، كالوسيطة الثانية ، الرقم الذي تريد بدء الترقيم منه. في حالتنا -
1
:
scores = [54,67,48,99,27] for i, score in enumerate(scores, 1): print(i, score) """ 1 54 2 67 3 48 4 99 5 27 """
النتائج
نأمل أن تسمح لك هذه القصة القصيرة للحلقات في Python بتعلم شيء جديد عن هذه اللغة.
أعزائي القراء! هل تعرف أي طرق أخرى لاستخدام دالة
enumerate()
؟ هل تبدو الحلقات التي تم إنشاؤها باستخدام
enumerate()
أكثر قابلية للقراءة من الحلقات التي تم إنشاؤها باستخدام
range(len())
؟
