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)  

 

posted @ 2022-11-05 20:56  麦哥编程  阅读(78)  评论(0编辑  收藏  举报