Python的列表推导式
你一定听过这样一个说法,尽量使用列表推导式,而不是用list.append方法来初始化一个列表,那么究竟为何列表
推导式会更快呢?
这是因为,列表推导式被编译后的字节码执行速度更快。python当然不是一门编译型语言,但是它还是要被解析成
二进制的字节码才能被执行,执行它的正是python解释器。 python底层还是用C语言写的
什么是列表推导式?
列表推导能非常简洁的构造一个新列表:只用一条简洁的表达式即可对得到的元素进行转换变形。
格式
[表达式 for 变量 in 列表] 或者 [表达式 for 变量 in 列表 if 条件]
result = [] for value in collection: if condition: result.append(expression)
案例分析
例子1:
mlist = [] for x in range(1,5): if x > 2: for y in range(1,4): if y < 3: mlist.append(x*y)
修改为列表推导式,如下:
[x*y for x in range(1,5) if x > 2 for y in range(1,4) if y < 3]
例子2:
循环获取1~10之间的每个元素的平方列表
#for循环 list = [] for x in range(10): list.append(x**2)
修改为列表推导式如下:
[x**2 for x in range(10)]
例子3:
偶数的平方列表
list1=[] for x in range(10): if x%2 == 0: list1.append(x**2)
例子4:
求出30以内所有的能被3整除的数的平方列表
def squared(x): return x * x multiples = [squared(i) for i in range(30) if i % 3 is 0] print(multiples)