迭代
通过for循环,对一个列数据进行遍历,这种遍历我们称之为迭代。
在大多数语言中,迭代是通过列表的下标完成,在python中也可以使用同样的方式迭代

在python中我们还可以直接迭代列表中的元素,这也是python中常用的迭代方式,使用方式如下:

使用这种方式我们还可以用来迭代dict,默认迭代的是key,如果要迭代value则可以用 for v in dict.values(),如果要同时迭代key和value,可以用for k,v in dict.items(),如:

同时,字符串也是可以迭代的,迭代方式如:

所以,只要是可以迭代对象,都可以使用 for循环进行迭代,python中还提供的一个方法用于判断对象是否是可迭代对象。
通过collection模块的Iterable类型判断:

迭代器
所谓迭代器就是访问集合元素的一种方式,迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束,迭代器只能前进不会后退。
迭代器的一大优点是不要求事先准备好整个迭代过程中的所有元素,只有在迭代道某个元素时才会被计算出来,这个特点使得它特别适合遍历一些巨大或是无限的集合。
特点:
1,访问者不需要关心迭代器内部的结构,只需要通过next()方法不断去取下一个内容
2,不能随机访问某个元素,只能从头到尾依次访问
3,访问时不能后退
4,便于遍历大数据的集合,节省内存
定义:
可以使用iter()方法生成一个迭代器对象,也可以使用iter()方法将可迭代对象转换成迭代器对象(list,tuple,dict,字符串等)
访问
可以使用__next()__方法从头到尾获得集合中的元素
遍历
因为迭代器对象也属于可迭代对象,所以可以使用for i in iter的方式遍历,另外我们也可以使用while循环,对迭代器对象进行遍历,值得注意的是,如果__next__()方法无法获取元素,将会报错,所以可以使用以下方式来遍历一个迭代器对象:

列表生成式
我们知道python中的range()方法可以很方便的生成一个数字列表,如rang(10),然后可以利用列表生成器生成更复杂的列表,如:
[x*x for x in range(10)]就会生成[0*0,1*1,2*2,...,9*9]
这种写法被称之为列表生成式
for循环后面还可以加上if判断,这样可以对生成的列表进行筛选,如:
[x*x for x in range(10) if x%2 ==0]就可以只生成偶数的平方
还可以使用两层循环,可以生成全排列
[x+y for x in "123" for y in "abc"]就会生成["1a","1b","1c","2a","2b","2c","3a","b","3c"]
还可以在for循环中使用两个或多个变量来生成list

这样会生成
的list