1、列表生成式
如果要生成[1x1, 2x2, 3x3, ..., 10x10]
怎么做?方法一是循环:
列表生成式则可以用一行语句代替循环生成上面的list:[x * x for x in range(1, 11)]
2、生成器
通过列表生成式,我们可以直接创建一个列表。但是,受到内存限制,列表容量肯定是有限的。如果需要创建一个很大容量的列表却只需要访问开始的几个,那么就会造成空间的浪费。如果列表元素可以按照某种算法推算出来,那我们是否可以在循环的过程中不断推算出后续的元素呢?这样就不必创建完整的list,从而节省大量的空间。在Python中,这种一边循环一边计算的机制,称为生成器:generator。
第一种方法很简单,只要把一个列表生成式的[]
改成()
,就创建了一个generator:
创建L
和g
的区别仅在于最外层的[]
和()
,L
是一个list,而g
是一个generator。怎么打印出generator的每一个元素呢?需要通过next()
函数获得generator的下一个返回值,不断的访问nest()函数,直到计算到最后一个元素,没有更多的元素时,抛出StopIteration
的错误。所以正确的方法是使用for
循环,因为generator也是可迭代对象,并且不需要关心StopIteration
的错误。
3、内置函数
判断里面:非零即真,非空即真
4、匿名函数
关键字lambda
表示匿名函数,冒号前面的x
表示函数参数。
匿名函数有个限制,就是只能有一个表达式,不用写return
,返回值就是该表达式的结果。
用匿名函数有个好处,因为函数没有名字,不必担心函数名冲突
匿名函数也是一个函数对象,也可以把匿名函数赋值给一个变量,再利用变量来调用该函数:
也可以把匿名函数作为返回值返回