1. 什么是迭代
迭代器(Iterator)是访问集合元素的一种方式,从集合的第一个元素开始访问,直到所有的元素被访问完结束。迭代器不要求你事先准备好整个迭代过程中所有的元素,只要在迭代至某个元素时才计算该元素,而在这之前或之后,元素可以不存在或者被销毁。迭代器只能往前不会后退,它本质是一个对象,并不像列表那样通过索引获取元素,充分的节省了内存,特别适合用于遍历一些巨大的集合。
Python认为遍历容器类型并不一定要用到迭代器,于是设计了可迭代对象(Iteratable Object),可迭代对象一次能够返回其中一个成员对象。比如我们常用的字符串就是一个典型的可迭代对象,可以逐个从字符串集合中取出所有字符,达到遍历字符串的效果。任何可以循环遍历的对象都是可迭代的,可迭代对象与迭代器的性能是一样的,它们都是惰性求值。
2. range( )函数
range( )函数是Python内置函数,是一个可迭代对象,用于生成一系列连续整数,常用于遍历数字序列,多与成员检测运算符in/not in一起用于for循环中对序列/可迭代对象进行逐个遍历。
range([start,] stop, [step])
start:包含start,可不给值,默认为0
stop:不包含stop,必须给值
step:步长可正可负,默认是1,不能为0

3. 成员运算
in用于成员测试,成员运算符用于判断一个元素是否在某个序列中、或者说是否存在某个值,比如判断某个字符是否存在于字符串。反之,测试不在序列中,可以使用not in。
4. for循环画矩形及竖辅助线
for-loops(definite)是针对可迭代对象提供的一种循环控制语句,允许代码被重复执行,语法格式如下:
#001 for iterator_var in sequence:
#002 statements
把画矩形的长边和垂直短边的过程重复做2次就是一个矩形,循环语句画矩形的程序流程图如下:

我们再用for-loop循环来为背景矩形画上辅助竖线。要分隔12等分,只需画11条线,意味著画线的过程要重复/循环11次,考虑到每次循环时起点位置的y坐标值没变化,但x坐标值从左侧起点位置(start_x)逐步向右边/原点移动、每次一个单元宽度(unit_len),生成的数字序列从1开始,到12结束/不包含12,而11条竖线就可以等分12份,range函数为:range(1, 12)。程序流程图见图3-7画竖辅助线流程图。
