Python高级函数主题:列表推导式、生成器与迭代器
1. 列表推导式基础
列表推导式是一种强大的工具,它可以将任意表达式应用于一系列值,并将结果收集到一个新列表中。从语法上看,列表推导式用方括号括起来,提醒我们它会构建列表。其简单形式是在方括号内编写一个表达式,后面跟着类似 for
循环头的结构,且两者使用相同的变量。Python会在隐含的循环每次迭代时收集表达式的结果。
例如,要收集0到9的平方数,可以使用列表推导式:
>>> [x ** 2 for x in range(10)]
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
若使用 map
函数实现相同功能,通常会使用 lambda
表达式内联定义一个小函数:
>>> map((lambda x: x ** 2), range(10))
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
map
函数的代码比列表推导式稍长一点,复杂度也略高,但对于更复杂的表达式,列表推导式通常需要输入的代码量会显著减少。
1.1 添加测试和嵌套循环
列表推导式的功能比上述更强大。可以在 for
后面添加 if
子句来增