前言
我们平时通常是通过 []
或 list()
函数来定义一个列表,本篇将会介绍一种全新的列表定义方式,它借助for
循环来快速的定义列表。
列表递推式
先举个例子:有个列表[1,2,3],我们要将他中的每个元素加1,组成另一个列表,常见做法如下:
>>> a = [1,2,3] >>> b = [] >>> for i in a: ... b.append(i+1) ... >>> b [2, 3, 4]
我们用列表递推式用一行代码能起到同样的效果。^_^
>>> c = [i+1 for i in a] >>> c [2, 3, 4]
[i+1 for i in a]就一行代码起到了同样的作用。列表推导式能极大的简化代码,但是会增加可读性难度。其基本格式如下:
variable = [out_exp_res for out_exp in input_list if out_exp == 2] out_exp_res: 列表生成元素表达式,可以是有返回值的函数。 for out_exp in input_list: 迭代input_list将out_exp传入out_exp_res表达式中。 if out_exp == 2: 根据条件过滤哪些值可以。
如上面的例子,要排除偶数,只对奇数操作,那么可以这样:
>>> d = [i+1 for i in a if i % 2 > 0] >>> d [2, 4]
如果对每个元素要进行的操作很复杂,那么可以传入一个函数,示例如下:
>>> def fun(i): return i*2 >>> e = [fun(i) for i in a if i % 2 > 0] >>> e [2, 6]
有了列表推导式,那么有没有字典推导式,集合推导式呢?大家有兴趣可以自己尝试下
更多交流小伙伴们关注公众号:猿桌派