第八章、函数进阶之迭代器03

第八章、函数进阶之迭代器03

1. 什么是迭代

迭代更新换代,基于上一次的结果退出下一次的结果

2.可迭代对象

具有__iter__()方法的就是可迭代对象,除了数字类型和函数类型都是可迭代对象

x = 1  # 不可迭代对象
s = 'jiayi'  # 可迭代对象
lt = [1, 2, 3]  # 可迭代对象
dic = {'a': 1, 'b': 2}  # 可迭代对象
tup = (1,)  # 元组只有一个元素必须得加逗号# 可迭代对象
se = {1, 2, 3}  # 可迭代对象
f = open('time.py')  # 可迭代对象

--iter--和--next--

str="ypp"
print(type(str))#<class 'str'>
str_iter=str.__iter__()#把str变为迭代器对象
print(type(str_iter))#<class 'str_iterator'>
print(str_iter.__next__())  #y  基于索引(基于上一次结果),通过__next__进行迭代
print(s_iter.__next__())#p

3.for循环原理(迭代原理)

str="ypp"
print(type(str))#<class 'str'>
str_iter=str.__iter__()#把str变为迭代器对象
print(type(str_iter))#<class 'str_iterator'>
for i in str:
    print(i)  #基于索引(基于上一次结果),通过__next__进行迭代
\-------------------------------------------------------
while 1:
    try:
        print(str_iter.__next__())
    except StopIteration:
        break
y
p
p
y
p
p
  1. 把str(可迭代对象/迭代器对象)用__iter__\转换成迭代器对象,就能使用迭代器对象__next__的方法了
  2. 使用__next__取出迭代器的所有值
  3. 使用__next__取尽迭代器全部值了后会报错,通过异常捕捉退出while循环

可迭代对象无论迭代多少次,内存地址都不会变化

迭代器对象一定时间可迭代对象,可迭代对象不一定是迭代器对象

转载于:https://www.cnblogs.com/demiao/p/11341865.html

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值