python生成器迭代_python中的生成器和迭代器
前言:
我们来了解一下什么是python中生成器。了解一下python生成器是什么,以及生成器在python编程之中能起到什么样的作用。
定义:
生成器和迭代器
通过列表生成式,我们可以直接创建一个列表。但是,受到内存限制,列表容量肯定是有限的。而且,创建一个包含100万个元素的列表,不仅占用很大的存储空间,如果我们仅仅需要访问前面几个元素,那后面绝大多数元素占用的空间都白白浪费了。
所以,如果列表元素可以按照某种算法推算出来,那我们是否可以在循环的过程中不断推算出后续的元素呢?这样就不必创建完整的list,从而节省大量的空间。在Python中,这种一边循环一边计算的机制,称为生成器:generator。
要创建一个generator,有很多种方法。第一种方法很简单,只要把一个列表生成式的[]改成(),就创建了一个generator:
>>> L = [x * x for x in range(10)]>>>L
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]>>> g = (x * x for x in range(10))>>>g at 0x1022ef630>
在上面的例子中:(x * x for x in range(10))是生成器,g是迭代器。
因为生成器是能够返回一个迭代器的函数,其最大的作用是将输入对象返回为一个迭代器
生成器是个函数!迭代器是个对象!在python3.5中,range(5)是一个生成器,返回的结果是一个对象,即 at 0x1022ef630>就是一个迭代器
我们创建了一个generator后,通过for循环来迭代它,并且不需要关心StopIteration的错误。
g = (x * x for x in range(10))for i ing:
print(i)
运行结果:
0
1
4
9
16
25
36
49
64
81
或者我们可以通过__next__()从生成器中取值
g = (x * x for x in range(10))
print(g.__next__())
print(g.__next__())
print(g.__next__())
print(g.__next__())
运行结果:
0
1
4
9
generator非常强大。如果推算的算法比较复杂,用类似列表生成式的for循环无法实现的时候,还可以用函数来实现。
创建迭代器
A、使用内建的工厂函数iter(iterable)可以将可迭代序列转换为迭代器
a=[1,2,3,4]
b=(1,2,3)
str='Tomwenxing'print(iter(a))
print(iter(b))
print(iter(str))
python生成器迭代_python中的生成器和迭代器相关推荐
- 如何用python生成软件_python中的生成器函数是如何工作的?
1. python中的普通函数是怎么运行的? 当一个python函数在执行时,它会在相应的python栈帧上运行,栈帧表示程序运行时函数调用栈中的某一帧.想要获得某个函数相关的栈帧,则必须在调用这个函 ...
- python可迭代_python中可迭代对象有哪些
Python中的可迭代对象有哪些?Python中的可迭代对象有:列表.元组.字典.字符串:常结合for循环使用: 判断一个对象是不是可迭代对象:from collections import Iter ...
- python循环迭代_Python中循环迭代的重做
不,Python不直接支持redo.有一个选项可能会让嵌套循环变得非常糟糕,比如:for x in mylist: while True: ... if shouldredo: continue # ...
- java 枚举迭代_Java中的枚举和迭代器之间的区别
java 枚举迭代 Java中的枚举与迭代器 (Enumeration vs Iterator in Java) Here, we will see how Enumeration differs f ...
- python中用于生成数字序列的函数_Python中的生成器?
自从PEP 255引入以来,生成器就一直是python的重要组成部分. python中的Generator是一种特殊的例程,可用于控制循环的迭代行为.生成器类似于返回数组的函数.生成器具有参数,我们可 ...
- python圆形生成器_python中的生成器
什么是生成器? 生成器是一个包含了特殊关键字yield的函数.当被调用的时候,生成器函数返回一个生成器.可以使用send,throw,close方法让生成器和外界交互. 生成器也是迭代器,但是它不仅仅 ...
- python四大器_Python编程四大神兽:迭代器、生成器、闭包和装饰器
生成器 生成器是生成一个值的特殊函数,它具有这样一个特点:第一次执行该函数时,先从头按顺序执行,在碰到yield关键字时该函数会暂停执行该函数后续的代码,并且返回一个值:在下一次调用该函数执行时,程序 ...
- jsp value设置为函数的返回值_python中的生成器函数是如何工作的?
1. python中的普通函数是怎么运行的? 当一个python函数在执行时,它会在相应的python栈帧上运行,栈帧表示程序运行时函数调用栈中的某一帧.想要获得某个函数相关的栈帧,则必须在调用这个函 ...
- python中迭代_python中的迭代什么意思
python中的迭代什么意思 发布时间:2020-09-21 12:33:45 来源:亿速云 阅读:67 作者:Leah 这期内容当中小编将会给大家带来有关python中的迭代什么意思,文章内容丰富且 ...
最新文章
- KA,连接池居然这么简单?
- 《React Native移动开发实战》一一3.4 完善商品列表——ListView组件
- 后端用python还是php_【后端开发】2019学python还是php
- 国科大prml12-半监督学习
- python时间比较好_花了半个月时间,终于找到了一款最适合的python教程
- copy linux file to mac,Mac Linux互相传递文件
- Java后端实现websocket与微信小程序端连接简单例子
- Inpaint 强大的去水印、改图软体,轻鬆把不要的物件从相片中移除
- 通过注册表永久禁用系统UAC功能
- java的cms系统_Java的CMS系统-赤兔云
- 诛仙mysql架设_目前最完整的诛仙私服架设教程
- 安卓手机格式化怎么弄_安卓手机怎么格式化?
- 上海市计算机三级 是什么水平,上海计算机等级考试跟全国计算机等级考试有什么区别吗?...
- 【官宣】BSV工程师能力认证项目在CSDN推出线上学习平台
- 说说职场中的交流和沟通(转)
- 更新被拒绝,因为远程仓库包含您本地尚不存在的提交
- 看影片《明日边缘》有感
- uva1471 Defense Lines
- COSCOI拥有知识产权的“Go East”角色在东南亚大受欢迎,为全球扩张铺平道路
- VS2019设置代码自动换行