一、什么是列表推导式?
列表推导式可以利用 range、元组、列表、字典和集合等数据类型,快速生成一个满足指定需求的列表。
语法:[表达式 for 迭代变量 in 可迭代对象 [if 条件表达式]] / [表达式 [if 条件表达式1 else 条件表达式2] for 迭代变量 in 可迭代对象]
其中,[if 条件表达式] 和 [if 条件表达式1 else 条件表达式2] 可选择,可以有也可以没有。如果只有 if 表达式,if 表达式在后;如果 if-else 都有,那么 if-else 在前。
二、列表推导式和 for 循环
列表推导式和 for 循环原理上一样,作用也一样,但执行效率上,列表推导式要明显比 for 循环快!近乎 double 的程度~~~
(参考:python的推导式 —— 列表推导式、集合和字典推导式)
(参考:列表推导式对比For循环执行效率)
三、列表推导式和 map
正常情况下 map 要比列表推导式快一些,但如果在 map 中使用 lambda,那么 map 会比列表推导式慢。
map 优点:map 返回的是生成器,对于大容量的操作,不会导致内存爆掉。(但列表推导式可能导致内存爆掉)
(参考:当列表推导式遇到lambda(匿名函数))
列表推导式优点:当 map 中有 lambda 时,列表推导式比 map 快。
总结:
运行效率:for 循环 < map(带 lambda) < 列表推导式 < map(不带 lambda)