【什么是迭代器】

  迭代取值的工具,,迭代:是一个重复的过程,每次重复都是基于上一次的结果二继续的,单纯的重复并不是迭代

count = 0
while count < 5:
    print(count)
    count += 1  # 每一次重复都是和上面的结果是有关联的

1.1 为何要有迭代器

  迭代器是用来迭代取值的工具,而涉及到把多个值循环取出来的类别有:元组、列表、字典、字符串、集合、文件

1 l = ['jinhao', 'wxx', 'lxx']
2 i = 1
3 while i < len(l):
4     print(l[i])
5     i += 1
6 =====================================
7 # 上述迭代器取值方式只适用于有索引的数据类型,但是有局限性,要提供一种能够不依赖于索引的取值方式:迭代器

 

1.2可迭代对象和迭代器

可迭代对象:但凡内置有__iter__方法的都称之为可迭代对象(可以转换成迭代器的对象)

s1 = 'xxx'
res = s1.__iter__()  # 转成迭代器对象

l1 = []
l1.__iter__()

t = (1,)
t.__iter__()

set={1,2,3}
res=set.__iter__() 转成迭代器对象
print(res.__next__())# 取值
print(res.__next__())  # 如果取超过集合里的值,则会报错
............................ 所有课迭代的类型有:字符串,列表,元组,字典,集合,文件类型,生成器

总结
可迭代对象是内置里有.__iter,但是迭代器对象是内置里有.__iter还有.__next
for循环的工作原理:for循环可以称之为迭代器循环
迭代器的优缺点:
1.节省内存
2.有一个同一取值的方式
3.取不到自己单独想要的值,不如索引
4.值取完,就无法二次取值

 

1.3 for循环也可以称之为迭代器循环(工作原理)

 【生成器:yield】

 

案例:可以产生无穷个值得生成器(迭代器)

 1 def my_range(start, stop, step=1):
 2     while start < stop:
 3         yield start
 4         start += step
 5         print('end')
 6 
 7 
 8 g = my_range(1, 10, 2)
 9 print(next(g))
10 print(next(g))
11 print(next(g))

 。

【 yield表达式】

 

posted on 2023-11-25 19:13  认真的六六  阅读(6)  评论(0编辑  收藏  举报