迭代器与列表的区别在于,构建迭代器的时候,不像列表把所有元素一次性加载到内存,而是以一种延迟计算(lazy evaluation)方式返回元素,这正是它的优点。比如列表中含有一千万个整数,需要占超过100M的内存,而迭代器只需要 几十个字节的空间。因为它并没有把所有元素装载到内存中,而是等到调用next()方法的时候才返回该元素(按需调用 call by need 的方式,本质上 for 循环就是不断地调用迭代器的next()方法)。
1.1 案例:列表与迭代器
列表不论遍历多少次,表头位置始终是第一个元素
迭代器遍历结束后,不再指向原来的表头位置,而是为最后元素的下一个位置
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
# 列表与迭代器的区别 a = [1, 3, 5, 7] a_iter = iter(a)
print('第一次遍历\n列表:') for i in a: print(i, ' ', end='') print('\n迭代器:') for i in a_iter: print(i, ' ', end='')
print('\n第二次遍历\n列表:') for i in a: print(i, ' ', end='') print('\n迭代器:') for i in a_iter: print(i, ' ', end='')