Python学习-迭代器和生成器

 1 ‘‘‘。在Python中,这种一边循环一边计算的机制,称为生成器:generator。
 2 要创建一个generator,有很多种方法。
 3 可以通过next()函数获得generator的下一个返回值‘‘‘
 4
 5 def fib(max):
 6     n, a, b = 0, 0, 1
 7     while n < max:
 8         #print(b)
 9         yield b
10         a, b = b, a + b
11         n = n + 1
12     return ‘done‘
13
14
15 #_*_coding:utf-8_*_
16 #@__author__ = ‘Alex Li‘
17
18 import time
19 def consumer(name):
20     print("%s 准备吃包子啦!" %name)
21     while True:
22        baozi = yield
23
24        print("包子[%s]来了,被[%s]吃了!" %(baozi,name))
25
26
27 def producer(name):
28     c = consumer(‘A‘)
29     c2 = consumer(‘B‘)
30     c.__next__()   #这样才能启用生成器
31     c2.__next__()  #这样才能启用生成器
32     print("老子开始准备做包子啦!")
33     for i in range(10):
34         time.sleep(1)
35         print("做了2个包子!")
36         c.send(i)
37         c2.send(i)
38
39 producer("alex")
40
41 #通过生成器实现协程并行运算
42
43 #迭代器
44 """凡是可作用于for循环的对象都是Iterable(可迭代)类型;
45 凡是可作用于next()函数的对象都是Iterator(迭代器)类型,它们表示一个惰性计算的序列;
46 集合数据类型如list、dict、str等是Iterable但不是Iterator,不过可以通过iter()
47 if 函数获得一个Iterator对象:
48 """

原文地址:https://www.cnblogs.com/Ian-learning/p/8366561.html

时间: 2024-08-29 15:31:55

Python学习-迭代器和生成器的相关文章

day13 python学习 迭代器,生成器

1.可迭代:当我们打印 print(dir([1,2]))   在出现的结果中可以看到包含 '__iter__', 这个方法,#次协议叫做可迭代协议 包含'__iter__'方法的函数就是可迭代函数 字符串.列表.元组.字典.集合都可以被for循环,说明他们都是可迭代的. 2.迭代器 iterator l = [1,2,3,4] l_iter = l.__iter__() #迭代器的生成 item = l_iter.__next__() #迭代器的使用,用此方法一一钓鱼迭代器中的数值 print

python之迭代器与生成器

python之迭代器与生成器 可迭代 假如现在有一个列表,有一个int类型的12345.我们循环输出. list=[1,2,3,4,5] for i in list: print(i) for i in 12345: print(i) 结果: Traceback (most recent call last): File "C:/Pycham/生成器与迭代器/test1.py", line 6, in <module> for i in 12345: TypeError:

【Python】迭代器、生成器、yield单线程异步并发实现详解

转自http://blog.itpub.net/29018063/viewspace-2079767 大家在学习python开发时可能经常对迭代器.生成器.yield关键字用法有所疑惑,在这篇文章将从理论+程序调试验证的方式详细讲解这部分知识,话不多说,直接进入主题. 一.迭代器(Iterater):     首先介绍迭代器,迭代器是访问集合元素的一种方式,迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束.是不是觉得跟for循环很像?但是迭代器有几个特性需记住:    1.访问者

Python的迭代器和生成器

先说迭代器,对于string.list.dict.tuple等这类容器对象,使用for循环遍历是很方便的就,在后台for语句对容器对象对象调用iteration()函数,这是python的内置函数,iter()会返回一个定义next()方法的迭代器对象,它在容器中逐个访问容器内元素,next()也是python的内置函数.在没有后续元素是,调用next()会抛出一个StopIteration异常 上面说的都是python自带的容器对象,它们都实现了相应的迭代器方法,自定义类的遍历怎么实现,方法是

python中迭代器和生成器。

前言:很多python教程中,对python的解释不容易理解,本文记录自己的理解和体会,是对迭代器和生成器的初步理解. 迭代器: 迭代器的实质是实现了next()方法的对象,常见的元组.列表.字典都是迭代器. 迭代器中重点关注两种方法: __iter__方法:返回迭代器自身.可以通过python内建函数iter()调用. __next__方法:当next方法被调用的时候,迭代器会返回它的下一个值,如果next方法被调用,但迭代器没有只可以返回,就会引发一个StopIteration异常.该方法可

python之 迭代器,生成器

什么叫跌代: 可以将某个数据集合内的数据一个一个挨着取出来就叫做跌代. 迭代器协议: 可以被跌代要满足的要求叫做可迭代协议,可迭代对象必须提供一个next的方法,执行该方法要么返回跌代中的下一项,要么就引起一个StopIteration异常,以终止跌代(跌代只能往后走,而不能往前退) python中的for循环: for循环的本质就是遵循迭代器协议去访问对象,for循环可以遍历(字符串,列表,元祖,字典,集合,文件对象)这些对象都是不可迭代对象,只不过在for循环时,调用了他们内部的-iter-

python基础----迭代器、生成器、协程函数

一.什么是迭代器协议 1.迭代器协议是指:对象必须提供一个next方法,执行该方法要么返回迭代中的下一项,要么就引起一个StopIteration异常,以终止迭代 (只能往后走不能往前退) 2.可迭代对象:实现了迭代器协议的对象(如何实现:对象内部定义一个__iter__()方法) 3.协议是一种约定,可迭代对象实现了迭代器协议,python的内部工具(如for循环,sum,min,max函数等)使用迭代器协议访问对象. 二,为什么要用迭代器 优点: 1:迭代器提供了一种不依赖于索引的取值方式,

python学习笔记之生成器和迭代器、内置函数

生成器 迭代器 内置函数 作业 一.生成器 1.1.列表生成器 问题引入:看列表[0, 1, 2, 3, 4, 5, 6, 7, 8, 9],我要求你把列表里的每个值加1 方案一: a = [1,3,4,6,7,7,8,9,11] for index,i in enumerate(a): a[index] +=1 print(a) 原值修改 方案二: >>> a [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] >>> a = map(lambda x:x

python基础学习迭代器和生成器

可以直接作用于for循环的数据类型有一下几种 一类是几何数据类型,如 list , tuple  , dict , set ,str 等 二类是generator包括生成器和带yield方法的函数 这些可以直接作用于for 循环的对象统称为可迭代对象 Iterable 我们可以使用法法.isinstance判断一个对象是否是Iterable对象 生成器不但可以作用于for循环,还可以使用next()方法不断的调用并返回下一个值,直到最后抛出StopIteration异常,表示无法继续返回下一个值