


Generator
A generator is an iterator, a special function that uses the yield operation to construct a function into an iterator. An ordinary function has an entry and a return value; when the function is called, execution starts from the entry and the corresponding return value is returned at the end. The function defined by the generator has multiple entries and multiple return values; perform the next() operation on the generator, enter the generator to start executing the code, and the yield operation returns a value to the caller and suspends the function; hang When starting, the function execution environment and parameters are saved; when performing another next() operation on the generator, the parameters are recalled from the suspended state, and the last suspended execution environment is entered to continue the following operations until the next one. Repeat the above process during the yield operation. Python's loop operation is different from the implementation of C language. If you use data structures such as List, a lot of content will be consumed; using a generator in a loop operation only requires instantiating an object in memory, which can reduce memory usage and improve the execution speed of loop operations. .
>>>def myG(): ... yield 1 ... yield 2 ... yield 3 ... >>>g=myG() >>>next(g) 1 >>>next(g) 2 >>>next(g) 3 >>>next(g) Traceback (most recent call last): File "<stdin>", line 1, in <module> StopIteration >>>g2=myG() >>>for i in g2: ... print(i) 1 2 3
Generator expression
The for...[if]... statement can concisely build a List, and can also be used to build a generator.
>>>a=[7,8,9] >>>b=[i**2 for i in a] >>>b [49, 64, 81] >>>ib=(i**2 for i in a) >>>ib <generator object <genexpr> at 0x7f72291217e0> >>>next(ib) 49 >>>next(ib) 64 >>>next(ib) 81 >>>next(ib) Traceback (most recent call last): File "<stdin>", line 1, in <module> StopIteration
The difference between iterator and generator
Iterator is a more abstract concept, any object, if its class has next method (next python3) and iter method return itself.
Every generator is an iterator, but not the other way around. Typically a generator is generated by calling a function s composed of one or more yield expressions. It also satisfies the definition of an iterator.
When you need a class to have some custom methods in addition to the characteristics of a generator, you can use a custom iterator. Generally speaking, generators are more convenient and simpler.
def squares(start, stop): for i in xrange(start, stop): yield i*i
Equivalent to generator expression:
(i*i for i in xrange(start, stop))
The list in reverse form is:
[i*i for i in xrange(start, stop)]
If you are building a custom iterator:
class Squares(object): def __init__(self, start, stop): self.start = start self.stop = stop def __iter__(self): return self def next(self): if self.start >= self.stop: raise StopIteration current = self.start * self.start self.start += 1 return current
At this point, you can also define your own methods such as:
def current(self): return self.start
The same point between the two: after the object is iterated, the iteration cannot be rewritten.

本篇文章给大家带来了关于Python的相关知识,其中主要介绍了关于Seaborn的相关问题,包括了数据可视化处理的散点图、折线图、条形图等等内容,下面一起来看一下,希望对大家有帮助。

本篇文章给大家带来了关于Python的相关知识,其中主要介绍了关于进程池与进程锁的相关问题,包括进程池的创建模块,进程池函数等等内容,下面一起来看一下,希望对大家有帮助。

本篇文章给大家带来了关于Python的相关知识,其中主要介绍了关于简历筛选的相关问题,包括了定义 ReadDoc 类用以读取 word 文件以及定义 search_word 函数用以筛选的相关内容,下面一起来看一下,希望对大家有帮助。

本篇文章给大家带来了关于Python的相关知识,其中主要介绍了关于数据类型之字符串、数字的相关问题,下面一起来看一下,希望对大家有帮助。

VS Code的确是一款非常热门、有强大用户基础的一款开发工具。本文给大家介绍一下10款高效、好用的插件,能够让原本单薄的VS Code如虎添翼,开发效率顿时提升到一个新的阶段。

本篇文章给大家带来了关于Python的相关知识,其中主要介绍了关于numpy模块的相关问题,Numpy是Numerical Python extensions的缩写,字面意思是Python数值计算扩展,下面一起来看一下,希望对大家有帮助。

pythn的中文意思是巨蟒、蟒蛇。1989年圣诞节期间,Guido van Rossum在家闲的没事干,为了跟朋友庆祝圣诞节,决定发明一种全新的脚本语言。他很喜欢一个肥皂剧叫Monty Python,所以便把这门语言叫做python。


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

AI Hentai Generator
Generate AI Hentai for free.

Hot Article

Hot Tools

SublimeText3 Chinese version
Chinese version, very easy to use

SublimeText3 English version
Recommended: Win version, supports code prompts!

MantisBT
Mantis is an easy-to-deploy web-based defect tracking tool designed to aid in product defect tracking. It requires PHP, MySQL and a web server. Check out our demo and hosting services.

Dreamweaver CS6
Visual web development tools

WebStorm Mac version
Useful JavaScript development tools