Python基础之迭代器

一、迭代器定义

迭代器指的就是迭代取值的工具
迭代是一个重复的过程,但不是单纯的重复,每次重复都是基于上一次的结果的而进行的

二、为何要用迭代器

1、为了找到一种通用的迭代取值方案
2、为了节省内存

三、可迭代对象和迭代器对象

内置有__iter__方法的类型都称之为可迭代的对象,
但凡调用了__iter__方法,就会将该类转换成迭代器对象。

四、迭代器对象的特点:

    1、内置有__next__方法
    2、内置有__iter__方法 ==> for循环
迭代器优缺点:
优点:
	1、提供了一种不依赖于索引一种通用迭代取值方案
	2、惰性计算,节省内存
缺点:
	1、取值麻烦
	2、无法预测值的长度
    3、一次性的
# 可迭代的对象
"hello".__iter__
[].__iter__
(11,).__iter__
{"k1":111}.__iter__
{11,22}.__iter__
f=open("a.txt",mode='wt')  # 迭代器对象
f.__iter__

# 迭代器对象
l=[11,22,33]
iter_l=l.__iter__()
print(iter_l.__next__())
print(iter_l.__next__())
print(iter_l.__next__())

info={'name':"egon","age":18,"gender":"male"}
iter_info=info.__iter__()
print(iter_info.__next__())
print(iter_info.__next__())
print(iter_info.__next__())
print(iter_info.__next__())

l=[11,222,333,444,555]
l={'name':"egon","age":18,"gender":"male"}

iter_l=iter(l)  # l.__iter__()
while True:
    try:
        print(next(iter_l))
    except StopIteration:
        break

print('________________')
iter_l=iter(l)
while True:
    try:
        print(next(iter_l))
    except StopIteration:
        break

l=[11,222,333,444,555]
iter_l=iter(l)

for item in iter_l:
    print(item)
print('====================')
for item in iter_l:
    print(item)

五、for循环原理

1、调用可迭代对象.__iter__(),拿到一个迭代器对象
2、调用next(迭代对象),将返回值赋值变量item
3、循环往复,直到抛出异常Stopiteration,for会检测异常然后结束循环
f=open('a.txt',mode='rt',encoding='utf-8')
for line in f:
    print(line)

print('======')
for line in f:
    print(line)

f.close()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值