iterable(可迭代的)和iterator(迭代器)的区别

迭代器一定是可迭代的,可迭代中确有部分不是迭代器;

迭代器

可迭代对象中,可以被next()来调用并不断用尽的函数称为迭代器;
区分于普通可迭代对象,迭代器是一个计算机惰性的计算,也就是当迭代器生成的时候,计算机并不知道这个迭代器里面有什么,只有next 或者 for 循环了,计算机才会告诉你是什么;没有下标的就可以不是可迭代对象;
普遍存在于迭代器函数;
普通可迭代对象类似 list ,计算机一定知道这里面有什么;有下标的一定是普通可迭代对象;