day03 (python进阶----迭代器----生成器)

本文探讨Python中的迭代器,包括可迭代对象和迭代器对象的概念。可迭代对象如字符串、列表等拥有__iter__方法,而迭代器对象则额外具备__next__方法,用于迭代取值。此外,文章还介绍了生成器,它是自定义迭代器的一种形式,通过使用yield关键字在函数中创建。生成器的优势在于可以控制取值的次数,按需生成值。
摘要由CSDN通过智能技术生成
一:迭代器
1、什么是迭代器
    迭代器指的是迭代取值的工具,迭代是一个重复的过程,每次重复都是基于上一次的结果而继续的,单纯的重复并不是迭代,迭代器是用来迭代取值的工具,而涉及到把多个值循环取出来的类型。
简单来说就是你外婆生了你妈,你妈生了你,你们是有关联的,而不是一个个体,必须要有你奶奶才有你。

2、迭代器又分为‘可迭代对象’和‘迭代器对象’

可迭代对象:就是内置有__iter__功能的对象,像我们所学的字符串、列表、元组、字典、集合、文件对象都属于可迭代对象。
迭代器对象:就是内置有__iter__功能且有__next__的功能的对象,当可迭代对象使用了__iter__功能赋值给一个变量,就会变成迭代器对象,而__next__的功能就是用来迭代取值的工具。

示例:

#这里依次按字符串、列表、元组、字典、集合、文件对象进行举例
info1='yeqing'
res1=info1.__iter__()
info2=['yeqing','牛逼','666']
res2=info2.__iter__()
info3=('yeqing1','帅逼','888')
res3=info3.__iter__()
info4={'yeqing3','苦逼','999'}
res4=info4.__iter__()
info5={'yeqing4':'123','shaofeng':'456'}
res5=info5.__iter__()
res6=open(r'user.txt',mode='rt',encoding='utf-8')
def func(x):
    while True:
        try:
            result=x.__next__()
            print(result)
        except StopIteration:
            break
func(res1)
func(res2)
func(res3)
func(res4)
func(res5)
func(res6)
res6.close()

二、生成器:

生成器简单来说就是踏马的自定义迭代器
自定义迭代器就是定义函数时加入了yield,在函数内一旦存在yield关键字,调用函数并不会执行函数体代码,而会返回一个生成器对象,生成器即自定义的迭代器,示例:

def my_range(start,stop,step=1):
    print('start...')
    while start < stop:
        yield start
        start+=step


res=my_range(1,7,3)
print(res.__next__())
print(res.__next__())
print(res.__next__())

生成器好处就是这里后面还可以打印,生成器的好处就是可以控制你的取值次数,你想取多少就打印多少次。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值