python| 什么是迭代器?

时间:2020-12-05 15:14:12   收藏:0   阅读:36

迭代器就是用来迭代取值的工具.

可迭代对象

通过索引取值的方法实现很简单, 那么 当遇到没有索引的 集合, 字典时, 我们该怎么办呢? 这我们就需要一种不依赖索引的取值方式, 这就需要用到迭代器.

1
2
3
4
5
l = [1, 2, 3, 4,]
l.__iter__()
等等

......

迭代器对象

可迭代对象调用内置.iter() 方法后返回的对象就是迭代器对象.

1
2
l = [1, 2, 3, 4,]
iter_l = l.__iter__()

iter_l 就是迭代器对象.
迭代器对象都有内置的.next()方法

==对于可迭代对象, 可以用内置的 iter() 方法, 和 next()方法进行取值 ==

1
2
3
4
5
6
list1 = [1, 2, 3, 4]
i = iter(list1)
print(next(i))
print(next(i))
print(next(i))
print(next(i))

优点

缺点

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
 list1 = [1, 2, 3, 4, 5]
# list1 是可迭代对象, 所以可以用__iter__() 方法产生迭代器对象

iter_list1 = list1.__iter__()
# 循环用迭代器对象的__next__()方法取值

while True:
print(iter_list1.__next__())

# 输出结果
1
Traceback (most recent call last):
2
3
4
5
File "D:/Python_study/Project/oldboy/day12/text.py", line 8, in <module>
print(iter_list1.__next__())
StopIteration

# 但是当迭代器对象内的值取尽的时候, python解释器会抛出异常, 这样就需要用到异常处理

for 循环原理 异常处理

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16


list1 = [1, 2, 3, 4, 5]
# list1 是可迭代对象, 所以可以用__iter__() 方法产生迭代器对象

iter_list1 = list1.__iter__()
# 循环用迭代器对象的__next__()方法取值

while True:
try:
print(iter_list1.__next__())

except StopIteration:
break

# 这就是for 循环原理

原文:https://www.cnblogs.com/huangjiangyong/p/14089067.html

评论(0
© 2014 bubuko.com 版权所有 - 联系我们:wmxa8@hotmail.com
打开技术之扣,分享程序人生!