Iterations python——迭代和生成器(Generators)、可( 二 )


元组和生成器定义区别
a = (1,2,3)c = (i for i in range(3))print(a)#(1, 2, 3)print(c)# ..print(type(a))# print(type(c))#
分析:使用dis模块查看编译过程
import disprint(dis.dis('(i for i in range(3))'))

Iterations  python——迭代和生成器(Generators)、可

文章插图
迭代()有关概念
从图片中可以看出,迭代对象、迭代器以及生成器并不是一个概念,通过一下程序结果可看出,虽然list、tuple…的对象都可以通过循环遍历,但它们都不是迭代器,只是在遍历过程中生成了迭代器后自动调用next 。
a=[1, 2, 3]a_iter = iter(a)b={1, 2, 3}b_iter = iter(b)c = (1, 2, 3) c_iter = iter(c)d = {'fir':1,'sec':2,'thir':3,}d_iter = iter(d)print(type(a))#print(type(a_iter)) #print(type(b))#print(type(b_iter)) #print(type(c))#print(type(c_iter))#print(type(d))#print(type(d_iter))#
可迭代对象在循环显示时也转换为了迭代器
import disprint(dis.dis('for _ in range(10):pass'))
可迭代对象()
能提供迭代器的任意对象 。列表,字典,,
迭代器()
a = [1,2,3]a_iter = iter(a)print('next显示:',next(a_iter))for i in a_iter:print(i)
从结果中发现,经过next后迭代器,后边循环遍历迭代器时会从后边开始 。
只要定义了next() 或者?法,它就是?个迭代器 。
迭代()
循环遍历(例如某个列表)的这个过程就是迭代 。