شعار زيفيرنت

فهم التكرارات مقابل التكرارات في بايثون

التاريخ:

فهم التكرارات مقابل التكرارات في بايثون
الصورة عن طريق geralt على Pixabay

 

غالبًا ما يتم الخلط بين التكرارات والتكرارات لبعضهما البعض ، ومع ذلك ، فهما مفهومان متميزان. تشرح هذه المقالة الفرق بين الاثنين وكيف يتم استخدامهما. لنلقِ نظرة موجزة أولاً على ماهية التكرار.

في مصطلحات الشخص العادي ، التكرار يعني "تكرار الخطوات". في مصطلحات البرمجة ، التكرارات هي تكرار عبارة / مجموعة من التعليمات البرمجية لعدد معين من المرات ، مما ينتج عنه مخرجات واحدة تلو الأخرى. يمكن تنفيذ التكرارات باستخدام حلقات for على سبيل المثال. 

الأشياء المتكررة في بايثون

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

ينفذ التكراري ملف __iter__() طريقة وإرجاع كائن مكرر. ومع ذلك ، إذا كان __iter__() لم يتم تعريف الطريقة ، ستستخدم بايثون __getitem__() بدلا من ذلك. 

من أمثلة المضاعفات التكرارية القوائم والقواميس والسلاسل النصية والصفوف وغير ذلك. طالما يمكنك التكرار فوقها ، فهي قابلة للتكرار. 

لمعرفة ما إذا كان الكائن قابلًا للتكرار أم لا ، يجب عليك التحقق مما إذا كان يدعم __iter__. من أجل القيام بذلك ، نستخدم ملف dir() دالة ، تُرجع جميع خصائص وأساليب الكائن المحدد ، باستثناء القيم. 

رمز المثال:

فئة الشخص: الاسم = "نيشا" العمر = 25 دولة = طباعة "إنجلترا" (دير (شخص))

 
الإخراج:

['__class__'، '__delattr__'، '__dict__'، '__dir__'، '__doc__'، '__eq__'، '__format__'، '__ge__'، '__getattribute__'، '__gt__'، '__hash__'، '__init __init_subclass__ '،' __le__ '،' __lt__ '،' __module__ '،' __ne__ '،' __new__ '،' __reduce__ '،' __reduce_ex__ '،' __repr__ '،' __setattr__ '،' __size_ub__ '،' __str__ ' ، '__weakref__'، 'age'، 'country'، 'name']

التكرارات في بايثون

 
المكرر هو أيضًا كائن يستخدم الامتداد __iter__() و __next__() طرق ، وهذا ما يسمى بروتوكول التكرار. إنه كائن قابل للتكرار مع حالة ، مما يعني أنه يتذكر المرحلة التي وصل إليها أثناء التكرار. 

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

تثير التكرارات أيضًا استثناء StopIteration عند عدم وجود المزيد من العناصر أو استنفاد الكائن. 

 
رمز المثال:

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

الأرقام = iter ([2 ، 4 ، 6 ، 8 ، 10]) طباعة (اكتب (أرقام)) طباعة (التالي (أرقام)) طباعة (التالي (أرقام)) طباعة (التالي (أرقام)) طباعة (التالي (أرقام) ) طباعة (التالي (أرقام)) # ستؤدي الوظيفة () التالية إلى رفع StopIteration نظرًا لاستنفاد الطباعة (التالي (الأرقام))

 
الإخراج:

يمكننا أن نرى أن النوع هو "list_iterator". توقف الإخراج عند 10 ورفع a StopIteration حيث لم يكن هناك المزيد من العناصر في قائمة الأرقام. 

2 4 6 8 10 --------------------------------------------- ------------------------------ تتبع StopIteration (آخر مكالمة أخيرة) في () 15 0 # ستعمل وظيفة bext () على رفع StopIteration عند نفادها ---> 721 طباعة (التالية (أرقام)) StopIteration:

 
حدود التكرارات:

  1. التكرارات تتحرك فقط في اتجاه أمامي ، ولا تتراجع أو تعيد ضبطها.
  2. لا يمكن نسخ التكرارات لأنها كائن أحادي الاتجاه يمكنه فقط المضي قدمًا.
  3. نظرًا لاتجاهه أحادي الاتجاه ، لا توجد طريقة لاسترداد العنصر السابق. 

أوجه التشابه والاختلاف بين التكرارات والتكرارات

Iterable المكرر
تكررت باستخدام: لحلقة  لحلقة 
الطرق المستخدمة:  __iter __ ()     __iter __ () و __التالي __ ()

التكرار هو قابل للتكرار ، لأنه يقوم أيضًا بتنفيذ __iter__() الأسلوب. 

تذكر: كل مكرر هو تكراره ، ولكن ليس كل تكرار. 

 
مثال dir() من قابل للتكرار:

الأرقام = [2 ، 4 ، 6 ، 8 ، 10] طباعة (دير (أرقام))

 
الإخراج:

في هذا الإخراج ، لقد أبرزت __iter__، مما يدل على أنها طريقة قابلة للتكرار.

['__add__'، '__class__'، '__contains__'، '__delattr__'، '__delitem__'، '__dir__'، '__doc__'، '__eq__'، '__format__'، '__ge__'، '__getattribute__'، '__ge__' __gt__ '،' __hash__ '،' __iadd__ '،' __imul__ '،' __init__ '،' __init_subclass__ '،'__المتر__'،' __le__ '،' __len__ '،' __lt__ '،' __mul__ '،' __ne__ '،' __new__ '،' __reduce__ '،' __reduce_ex__ '،' __repr__ '،' __reversed__ '،' __rmul__ '،' __setattr__ ' '__setitem__'، '__sizeof__'، '__str__'، '__subclasshook__'، 'append'، 'clear'، 'copy'، 'count'، 'extension'، 'index'، 'insert'، 'pop'، 'remove '،' عكس '،' فرز ']

 
مثال dir() من مكرر:

في هذا المثال ، نكرر قائمة الأرقام. 

الأرقام = [2، 4، 6، 8، 10] أرقام 2 = iter (أرقام) طباعة (dir (أرقام 2))

 
الإخراج:

في هذا الإخراج ، لقد أبرزت __iter__ و __next__، مما يدل على أنها طريقة التكرار.

['__class__'، '__delattr__'، '__dir__'، '__doc__'، '__eq__'، '__format__'، '__ge__'، '__getattribute__'، '__gt__'، '__hash__'، '__init___'، '__inlass__'__المتر__'،' __le__ '،' __length_hint__ '،' __lt__ '،' __ne__ '،' __new__ '،'__التالي__'،' __reduce__ '،' __reduce_ex__ '،' __repr__ '،' __setattr__ '،' __setState__ '،' __sizeof__ '،' __str__ '،' __subclasshook__ ']

آمل أن تكون هذه المدونة القصيرة قد أعطتك فهمًا أفضل للاختلافات بين المتكرر والمكرر.

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

بقعة_صورة

أحدث المعلومات الاستخباراتية

بقعة_صورة