目录
第八章、函数进阶之迭代器03
1. 什么是迭代
迭代更新换代,基于上一次的结果退出下一次的结果
2.可迭代对象
具有__iter__()方法的就是可迭代对象,除了数字类型和函数类型都是可迭代对象
x = 1 # 不可迭代对象s = 'jiayi' # 可迭代对象lt = [1, 2, 3] # 可迭代对象dic = {'a': 1, 'b': 2} # 可迭代对象tup = (1,) # 元组只有一个元素必须得加逗号# 可迭代对象se = {1, 2, 3} # 可迭代对象f = open('time.py') # 可迭代对象
--iter--和--next--
str="ypp"print(type(str))#str_iter=str.__iter__()#把str变为迭代器对象print(type(str_iter))# print(str_iter.__next__()) #y 基于索引(基于上一次结果),通过__next__进行迭代print(s_iter.__next__())#p
3.for循环原理(迭代原理)
str="ypp"print(type(str))#str_iter=str.__iter__()#把str变为迭代器对象print(type(str_iter))# for i in str: print(i) #基于索引(基于上一次结果),通过__next__进行迭代\-------------------------------------------------------while 1: try: print(str_iter.__next__()) except StopIteration: break
yppypp
- 把str(可迭代对象/迭代器对象)用__iter__\转换成迭代器对象,就能使用迭代器对象__next__的方法了
- 使用__next__取出迭代器的所有值
- 使用__next__取尽迭代器全部值了后会报错,通过异常捕捉退出while循环
可迭代对象无论迭代多少次,内存地址都不会变化
迭代器对象一定时间可迭代对象,可迭代对象不一定是迭代器对象