[Python] How does the for loop work?
If you understand it from an iterative level, you may have a deeper understanding of how for works.
First, let’s use dir to see what the two different types of range and str have in common.
>>> dir(range) ['__class__', '__contains__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__gt__', '__hash__', '__init__', '__iter__', '__le__', '__len__', '__lt__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'count', 'index', 'start', 'step', 'stop'] >>> dir(str) ['__add__', '__class__', '__contains__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getnewargs__', '__gt__', '__hash__', '__init__', '__iter__', '__le__', '__len__', '__lt__', '__mod__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__rmod__', '__rmul__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'capitalize', 'casefold', 'center', 'count', 'encode', 'endswith', 'expandtabs', 'find', 'format', 'format_map', 'index', 'isalnum', 'isalpha', 'isdecimal', 'isdigit', 'isidentifier', 'islower', 'isnumeric', 'isprintable', 'isspace', 'istitle', 'isupper', 'join', 'ljust', 'lower', 'lstrip', 'maketrans', 'partition', 'replace', 'rfind', 'rindex', 'rjust', 'rpartition', 'rsplit', 'rstrip', 'split', 'splitlines', 'startswith', 'strip', 'swapcase', 'title', 'translate', 'upper', 'zfill'] 查看这两个的共有属性 >>> set(dir(range)) & set(dir(str)) {'__hash__', '__eq__', '__contains__', '__iter__', '__getitem__', 'count', '__lt__', '__dir__', '__le__', '__subclasshook__', '__ge__', '__sizeof__', '__format__', '__len__', '__ne__', '__getattribute__', '__delattr__', '__reduce_ex__', '__gt__', '__reduce__', '__setattr__', '__doc__', '__class__', '__new__', '__repr__', '__init__', 'index', '__str__'}
We focus on the __iter__ attribute. Both of them have this function. If you look at other objects that can be iterated using a for loop, you can find this special method.
The object that implements this method is called iterable.
We pass the object to Python's built-in iter() method, which will return an iterator. The for loop uses this pattern to implement it applicable to all objects.
For example:
>>> iter([1, 2]) <list_iterator object at 0x000001A1141E0668> >>> iter(range(0, 10)) <range_iterator object at 0x000001A1124C6BB0> >>> iter("abc") <str_iterator object at 0x000001A1141E0CF8> >>> iter函数返回的对象我们称之为iterator,iterator只需要做一件事,那就是调用next(iterator)方法,返回下一个元素。
For example:
>>> t = iter("abc") >>> next(t) 'a' >>> next(t) 'b' >>> next(t) 'c' >>> next(t) Traceback (most recent call last): File "<stdin>", line 1, in <module> StopIteration
When the iterator has no more elements to iterate, an exception will be thrown.
So here I give the definitions of itrable and iterator.
iterable:
Can be passed to iter and return an iteratot object
iterator:
Can be passed to the next function and return the object of the next iterated element, and throw an exception at the end of the iteration.
So, for the example you mentioned, we use iterators to redefine it.
>>> t = iter(range(90, 0, -1)) >>> t <range_iterator object at 0x000001A1124C6BB0> >>> next(t) 90 >>> next(t) 89 >>> next(t) 88
I hope to gain something from reading this.
For more articles related to [Python] how the for loop works, please pay attention to the PHP Chinese website!

Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics



Solution to permission issues when viewing Python version in Linux terminal When you try to view Python version in Linux terminal, enter python...

When using Python's pandas library, how to copy whole columns between two DataFrames with different structures is a common problem. Suppose we have two Dats...

How to teach computer novice programming basics within 10 hours? If you only have 10 hours to teach computer novice some programming knowledge, what would you choose to teach...

How to avoid being detected when using FiddlerEverywhere for man-in-the-middle readings When you use FiddlerEverywhere...

How does Uvicorn continuously listen for HTTP requests? Uvicorn is a lightweight web server based on ASGI. One of its core functions is to listen for HTTP requests and proceed...

The article discusses popular Python libraries like NumPy, Pandas, Matplotlib, Scikit-learn, TensorFlow, Django, Flask, and Requests, detailing their uses in scientific computing, data analysis, visualization, machine learning, web development, and H

In Python, how to dynamically create an object through a string and call its methods? This is a common programming requirement, especially if it needs to be configured or run...

Using python in Linux terminal...
