目录
一、迭代
定义:
迭代就是一种循环遍历,类似在列表和元组上进行for循环这种类似操作。在python中,只要是可迭代的对象,无论是否存在下标,都是可以直接迭代的。
如下图所示:
二、迭代器
定义:
迭代器是一个可以记住遍历的位置的对象,从第一个元素开始访问,直到所有的元素被访问完结束。其中在迭代器执行过程中,只会往前继续执行,不会回退,存在两个基础方法iter()和next()供调用。在python中,字符串,元组和对象均可以创建迭代器。
迭代器对象可以使用for循环进行遍历,也可以使用next()函数进行遍历,如下图所示:
下图可充分理解上述迭代器不可以回退,只能向前执行的原理了。
三、列表生成式
3.1、创建list方式
第一种为普通创建法:list1 = [a,b,c,d,e,f]
第二种为规律性整体赋值方法:list2 = list(range(2,41)) # 赋值一个列表,里面包含2-40
3.2、列表生成式的创建
List1 = [列表元素表达式 for 元素 in 迭代器]
列表生成式在某些参考资料中也被称作列表推导式。
四、生成器
4.1、定义
列表中的元素按照某种算法可进行循环推算,我们此时将这种一边循环一边计算,且在python中使用yield函数的机制称之为生成器(generator)。
跟普通函数存在区别的地方是生成器是一个返回迭代器的函数,只能用于迭代操作,我们也可以简单理解为生成器就是一种特殊的迭代器。在调用生成器运行的过程中,每次遇到yield调用时函数会保存并暂停,仅仅返回yield的值,直到下次执行next方法时才会继续从保存位置继续执行。
4.2、生成器创建
将列表生成式的[]换为(),便是生成器的基础格式。
可以看到,生成器并不是创建数字列表,而是返回一个生成器,这个生成器每次计算出一个条目后就将其yield出来
4.3、遍历生成树的元素
用for循环可以遍历生成器的元素
用next遍历也可以
4.4、以函数形式实现生成器
通过yield函数,对生成器对象调用设置中断信号,调用next函数时,每到一个yield则中断一次执行,并保存对应位置,等下次调用next函数时,会从保存位置继续执行,直到遇到下一个yield终止。
五、装饰器
装饰器是一种在函数中调用其他函数方法的简化写法,替代将函数当做参数传参的方式。装饰器一共存在三个功能:接收一个函数作为参数;嵌套一个包装函数,该包装函数会接收原函数的相同参数并执行原函数内容;返回嵌套函数。
应用装饰器后,步骤变更为:
通过上述例子,我们可以得到装饰器书写基本格式(语法糖):