Home  >  Article  >  Backend Development  >  Python basics iterators and generators

Python basics iterators and generators

高洛峰
高洛峰Original
2017-03-27 16:41:011997browse

Iterators and generators


1. Iterator

Iterator Is a way to access collection elements. The iterator object starts accessing from the first element of the collection until all elements have been accessed. Iterators can only go forward, not backward, but that's okay because people rarely go backward during iteration. In addition, one of the great advantages of iterators is that they do not require all elements to be prepared in advance for the entire iteration process. The iterator only calculates an element when it iterates to it, and before or after that, the element may not exist or be destroyed. This feature makes it particularly suitable for traversing some huge or infinite collections, such as several G files

Features:

  1. Visitors do not need to care about the internal structure of the iterator, they only need to continue to get the next content through the next() method

  2. cannot be random To access a value in the collection, you can only access it sequentially from beginning to end

  3. You cannot go back when you are halfway through the access

  4. Easy to loop through relatively large data sets and save memory


>>> a = iter([1,2,3,4,5])
>>> a
<list_iterator object at 0x101402630>
>>> a.__next__()
1
>>> a.__next__()
2
>>> a.__next__()
3
>>> a.__next__()
4
>>> a.__next__()
5
>>> a.__next__()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
StopIteration

2. Generator

#When a function is called, it returns an iterator, then this function is called a generator; if the function contains yield syntax, then this function will become a generator;


def func():
    yield 1
    yield 2
    yield 3
    yield 4

In the above code: func is a function called a generator. When this function func() is executed, you will get an iterator.


>>> temp = func()
>>> temp.__next__()
1
>>> temp.__next__()
2
>>> temp.__next__()
3
>>> temp.__next__()
4
>>> temp.__next__()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
StopIteration

3. Example

a.Use generator customization range


def xrange(n):   
    start = 0
    print(start)
    while True:
        if start > n :
            return
        yield start
        start += 1
obj = xrange(4)
n1 = obj.__next__()
n2 = obj.__next__()
n3 = obj.__next__()
n4 = obj.__next__()
n5 = obj.__next__()
n6 = obj.__next__()
print(n1,n2,n3,n4,n5,n6)

b. Use an iterator to access range

The above is the detailed content of Python basics iterators and generators. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn