python迭代器

迭代器

迭代器是一个可以记住遍历的位置的对象。

迭代器有两个基本的方法:iter() 和 next()。

使用对象内置的__iter__()方法生成迭代器

it = name.__iter__()

使用内置工厂函数生成迭代器

it = iter(name)

迭代器通过其内建的 iter.next() 方法,或通过 Python 内建的 next() 来迭代下一个元素,直到最后触发 StopIteration异常后表示迭代结束。

实例:

name = {'张三': 24, '李四': 25, '王五': 20}
it = iter(name)
while True:
try:
print(next(it))
except StopIteration:
break

输出为三个key的值

 

而for循环,本质就是调用了迭代器

for x in name 把name变成了一个迭代器,然后调用next方法,而且不用写 except StopIteration

 

 

迭代器的作用:

优点:

1.提供一种不依赖索引的取值方式,这样就可以遍历那些没有索引的可迭代对象(字典,集合,文件)

2.迭代器与列表比较,迭代性是惰性计算,更省内存

缺点:

1.永远无法获取迭代器的长度,使用不如列表索引灵活,比如要获取第三个,则必须要一个个next

2.一次性,只能往后取,无法倒着取

实例:

name = {'张三': 24, '李四': 25, '王五': 20}
it = iter(name)
while True:
    try:
        print(next(it))
    except StopIteration:
        break
for i in it:
    print(i)

输出只有三个key的值,因为it这个迭代器已经取完了值

 

转载于:https://www.cnblogs.com/wangzicheng/p/9781038.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值