python 迭代器&&生成器

有一篇文章写得迭代器和生成器,写得很好:https://www.cnblogs.com/wj-1314/p/8490822.html
#列表生成器print([i*2 for i in range(10)])

#生成器:调用时才会产生相应的数据,不调用时不暂用内存,同时只记住当前的位置,只有一个__next__()方法b=(i*2 for i in range(10))for i in b:    print(i)

什么是生成器?

  通过列表生成式,我们可以直接创建一个列表,但是,受到内存限制,列表容量肯定是有限的,而且创建一个包含100万个元素的列表,不仅占用很大的存储空间,如果我们仅仅需要访问前面几个元素,那后面绝大多数元素占用的空间都白白浪费了。

  所以,如果列表元素可以按照某种算法推算出来,那我们是否可以在循环的过程中不断推算出后续的元素呢?这样就不必创建完整的list,从而节省大量的空间,在Python中,这种一边循环一边计算的机制,称为生成器:generator

  生成器是一个特殊的程序,可以被用作控制循环的迭代行为,python中生成器是迭代器的一种,使用yield返回值函数,每次调用yield会暂停,而可以使用next()函数和send()函数恢复生成器。

  生成器类似于返回值为数组的一个函数,这个函数可以接受参数,可以被调用,但是,不同于一般的函数会一次性返回包括了所有数值的数组,生成器一次只能产生一个值,这样消耗的内存数量将大大减小,而且允许调用函数可以很快的处理前几个返回值,因此生成器看起来像是一个函数,但是表现得却像是迭代器

什么是迭代器?

  Iterable:直接作用于for循环的对象

  Iterator:可以被next()函数调用并不断返回下一个值的对象称为迭代器,迭代器可以通过iter()函数获得一个Iterator对象

原文地址:https://www.cnblogs.com/wendyw/p/9724819.html

时间: 2024-08-15 18:56:01

python 迭代器&&生成器的相关文章

[python]--迭代器,生成器补充

在python中,list,string,dict都是可迭代对象,可以通过for语句遍历. 迭代器 迭代器对象要求支持迭代器协议的对象,在python中,支持迭代器协议就算实现对象的__iter__()和next()方法.其中__iter__()方法返回迭代器对象本身; next()方法返回容器的下一个元素,在结尾时引发StopIteration异常 __iter__()和next()方法 这两个方法是迭代器最基本的方法,一个用来获得迭代器对象,一个用来获取容器中的下一个元素. 对于可迭代对象,

Python 迭代器&生成器,装饰器,递归,算法基础:二分查找、二维数组转换,正则表达式,作业:计算器开发

本节大纲 迭代器&生成器 装饰器  基本装饰器 多参数装饰器 递归 算法基础:二分查找.二维数组转换 正则表达式 常用模块学习 作业:计算器开发 实现加减乘除及拓号优先级解析 用户输入 1 - 2 * ( (60-30 +(-40/5) * (9-2*5/3 + 7 /3*99/4*2998 +10 * 568/14 )) - (-4*3)/ (16-3*2) )等类似公式后,必须自己解析里面的(),+,-,*,/符号和公式,运算后得出结果,结果必须与真实的计算器所得出的结果一致 迭代器&

python迭代器,生成器,推导式

可迭代对象 字面意思分析:可以重复的迭代的实实在在的东西. list,dict(keys(),values(),items()),tuple,str,set,range, 文件句柄(待定) 专业角度: 内部含有'__iter__'方法的对象,就是可迭代对象. 内置函数:dir() print(dir(str)) 判断一个对象是否是可迭代对象: print('iter' in dir(str)) 优点: 直观. 操作方法较多. 缺点: 占内存. 不能迭代取值(索引,字典的key). 迭代器 字面意

python 迭代器 生成器 装饰器

迭代器 可以直接作用于for循环的对象统称为可迭代对象(Iterable). 可以被next()函数调用并不断返回下一个值的对象称为迭代器(Iterator). 所有的Iterable均可以通过内置函数iter()来转变为Iterator. names = iter(['sun', 'ibm', 'sunny']) print(names) print(names.__next__()) print(names.__next__()) print(names.__next__()) print(

python 迭代器 生成器 (转)

转帖: 原文写的不错! 原文地址:http://www.cnblogs.com/kaituorensheng/p/3826911.html#_label0 阅读目录 1. 迭代器 2. 生成器 3. 参考 回到顶部 1. 迭代器 迭代器是访问集合元素的一种方式.迭代器对象从集合的第一个元素开始访问,知道所有的元素被访问完结束.迭代器只能往前不会后退,不过这也没什么,因为人们很少在迭代途中往后退. 1.1 使用迭代器的优点 对于原生支持随机访问的数据结构(如tuple.list),迭代器和经典fo

python迭代器&生成器

看代码看到什么yield又看不懂了.Sign..... 迭代器: 首先Python有内置容器类:List ,dict,tuple.... 我们把这些叫做Container.Container都是可以用for..in..来遍历的. 那么,是什么使得遍历可以成功进行呢? 就是我们的迭代器对象啦.这个对象使得遍历能够进行. 迭代器一般有两个方法: ①__iter__()②next() 我们先来解释for..in...到底是怎么进行的: 首先会调用__iter__, 这个函数是用来返回Iterator对

四.Python迭代器生成器和装饰器

迭代器 迭代是Python最强大的功能之一,是访问集合元素的一种方式. 迭代器是一个可以记住遍历的位置的对象. 迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束.迭代器只能往前不会后退. 凡是可作用于for循环的对象都是Iterable类型: 凡是可作用于next()函数的对象都是Iterator类型,它们表示一个惰性计算的序列: 集合数据类型如list.dict.str等是Iterable但不是Iterator,不过可以通过iter()函数获得一个Iterator对象. Pyt

python迭代器,生成器,列表生产式

目录 列表生成式 生成器 1.定义 2.作用 3.返回值 迭代器 1.特点 2.常见的迭代器 3.可迭代对象 列表生成式 列表生成式即List Comprehensions,是Python内置的非常简单却强大的可以用来创建list的生成式. 例如: >>> [x * x for x in range(1, 11)] [1, 4, 9, 16, 25, 36, 49, 64, 81, 100] 生成器 1.定义 一个函数调用时返回一个迭代器,那这个函数就叫做生成器(generator),如

python迭代器生成器(一)

for循环可以用于python中任何序列类型,包括序列.元组以及字符串.例如: >>> for x in [1,2,3,4]: print(x * 2,end='')...2468 >>> for x in (1,2,3,4): print(x * 2,end='')...2468 >>> for y in 'python': print(y * 2 ,end=' ')...pp yy tt hh oo nn 实际上,for循环甚至比这更为通用:可用于