迭代器
-
迭代器
- 用来取值的工具,可以迭代取值
- 迭代:迭代是重复反馈过程的活动,每次对过程的重复成为一次“迭代”
- 每一次迭代都是基于上一次的结果而来的
-
可迭代对象:
所有的序列类型:str、list、tuple、dict、set、f
凡是内部有
.__iter__()
方法的都是可迭代对象 -
获取迭代器:
通过可迭代对象
.__iter__()
方法得到的返回值就是迭代器对象 -
如何迭代取值:
迭代器对象
.__next__()
每一次执行,都会从迭代器对象中取一个值
取值相当于for循环,而for循环的原理相当于
list = [1, 2, 3, 4]
for line in list1:
迭代器对象.__next__()
print(line)
str1 = 'hello world!'
for i in str1:
print(i.__iter__().__next__())
list1是可迭代对象——>内部会自动调用.__iter__()
——>迭代器对象
当值被取完就会就会报错,所以这里用到
try: 捕获异常
l1 = [1, 2, 3, 4, 5]
inter_l1 = l1.__iter__()
while True:
print(inter_l1.__next__())
StopIteration # 报错
用法:
try:
print(iter_list1.__next__())
except StopIteration:
break
l1 = [1, 2, 3, 4, 5]
inter_l1 = l1.__iter__()
while True:
try:
print(inter_l1.__next__())
except StopIteration:
break
1
2
3
4
5
迭代器对象也是一个可迭代对象
可迭代对象不一定是迭代器对象
文件比较特殊:文件即是可迭代对象,也是迭代器对象
-
迭代器对象的优点
- 不依赖与索引迭代取值
- 节省内存空间
-
迭代器对象的缺点
- 取值麻烦
- 每次取值都要从第一个值开始,无法通过索引取值