python代码片段

列表映射后求平均值

1
2
3
4
5
6
def average(lst, fn):
return sum(map(fn, lst), 0.0) / len(lst)

# 调用
average([1, 3, 4], lambda x: x)
average([{'n': 1}, {'n': 3}, {'n': 4}, lambda x: x['n'])

形如lambda parameters: expression的表达式可以创建一个匿名函数, 有时这比先调用函数再当做参数传入要方便许多. 比如算平方list(map(lambda x: x * x, [1, 2, 3, 4, 5, 6, 7, 8, 9])).

1
2
3
4
# 使用lambda方式定义一个函数
g = lambda x: x * x
g(2) # 4
(lambda x: x * x)(2) # 4

map的类似应用

1
2
3
4
def max(lst, fn):
return max(map(fn, lst))

max([{'n': 1}, {'n': 3}, {'n': 4}, lambda x: x['n'])