Python之迭代器和生成器

迭代器(Iterator)和生成器(Generator)

概述:
迭代器是访问集合元素的一种方式。迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束。迭代器只能往前不会后退。
延迟计算和惰性求值
迭代器不用你事先准备好整个迭代过程的所有元素。仅仅是在迭代至某个元素时才计算该元素,而这之前或者之后,元素可以不存在或者被销毁。这个特点使得它特别适合用于遍历一些巨大的或是无限的集合。
python中有哪些迭代器,可迭代对象

字符串      可迭代对象,不是迭代器
列表        可迭代对象,不是迭代器
元组        可迭代对象,不是迭代器
集合        可迭代对象,不是迭代器
字典        可迭代对象,不是迭代器
迭代器的生成与取值
  • 迭代器的生成主要依靠 iter()函数将可迭代对象转换成迭代器
    如:
lst = [1,2,3,4,5]
re = iter(lst)      #得到一个迭代器
print(re,type(re))  #查看生成的迭代器对象,与其类型

对迭代器取值的三种方式:1.用next() 2.转换成list 3.用for 遍历
注意事项:从迭代器里取值,取走一个就少一个,取空之后再取数据的话,就会报错

  • 1.next()
tuple1 = (1,2,3,4)
result = iter(tuple1)
print(next(result)      #取出1
print(next(result)      #取出2
print(next(result)      #取出3
print(next(result)      #取出4
print(next(result)      #报错,超出范围,迭代器内已经没有可取的值
  • 2.转换成list
tuple1 = (1,2,3,4)
result = iter(tuple1)
re = list(result)
print(re)
  • 3.用for遍历
tuple1 = (1,2,3,4)
result = iter(tuple1)
for i in result:
    print(i)

zip()函数
  • zip(Iterble,Iterable) 把当前多个可迭代对象组成一个迭代器
list1 = ["铁锤","二妮","小可爱"]
res = zip(list1)
for i in res:
    print(i)        #以元组的形式对迭代器元素单一输出
  • zip将两个可迭代对象组合成一对元组,但必须是一一对应,超出或者少了后边会被丢弃
list1 = ["铁锤","二妮","小可爱","大姐姐"]
tuple1 = ("80","40","白给")
res = zip(list1,tuple1)
for name in res:
    print(name)
res1=  dict(res)       #可将res转成字典
print(res1)
  • *zip是zip的逆过程,*zip 不能作为开头直接出现,需要和zip 配合使用,但两个可迭代对象就被转换成元组的形式,无法逆回输出原来的形式
list1 = ["铁锤","二妮","小可爱","大姐姐"]
tuple1 = ("80","40","白给")
res = zip(*zip(list1,tuple1))
for name in res:
    print(res)

生成器(Iterator)

生成器就是高级的迭代器,也是可迭代对象,它最主要的特征就是自定义的迭代器。
这里我们来判断我们自定义的生成器是否是迭代器

#列表推导式
lst= [i*i for i in range(1,11)] #生成10以内的平方的可迭代对象
print(lst)

想要调用Iterator模块需要导入哦

from colloctions import Iterator
lst = (i*I for i in range(1,11))
print(lst)   #生成器的创建
re = isinstance(lst,Iterator)
print(re)       #结果为True,表示lst是迭代器  
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
单片微型计算机(MCU)经过多年的发展,在性能上有很大的进步,在型号上发展到上千种类,已经广泛应用于人类社会生活的各个领域。单片机课程已经成为高校计算机、自动化、测控以及电子信息工程等专业的重要课程。该课程是一门理论性和实践性都很强的课程,在实际教学中,应将理论教学和实验教学紧密结合。学生在掌握理论知识之余,必须通过编写程序、设计硬件电路、仿真、调试这一系列的实验过程,才能更好地掌握单片机的结构原理和应用技能。随着单片机及其接口技术的飞速发展,目前市场上供应的编程仿真实验资源并不能完全满足高校单片机课程教与学的需求,构建低成本、技术先进、源码公开的单片机编程仿真实验系统,对我国单片机课程的教学和单片机领域人才的培养具有重要的现实意义。 本论文结合目前教学中对单片机编程仿真实验系统的实际需求,采用模块化结构设计思想,精心设计和开发了单片机编程仿真实验系统。该单片机编程仿真实验系统由PC机端单片机编程控制软件和单片机编程仿真实验板两部分组成。PC机端的单片机编程控制软件可以自动检测到连接到单片机编程仿真实验板上的单片机,控制单片机编程器擦除、写入、读出、校验目标单片机ROM中的程序,以十六进制文件(.HEX文件)格式显示在控制界面内;单片机仿真实验系统能够把写入单片机的程序实时地运行,并呈现实际运行效果。单片机编程控制软件和单片机仿真实验板组成一个完整的单片机编程仿真实验系统。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值