Python basics iterators and generators

高洛峰
Release: 2017-03-27 16:41:01
Original
1971 people have browsed it

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
Copy after login

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
Copy after login

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
Copy after login

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)
Copy after login

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!

Related labels:
source:php.cn
Statement of this Website
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
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
About us Disclaimer Sitemap
php.cn:Public welfare online PHP training,Help PHP learners grow quickly!