Python 内置高阶函数详细

1. Python内置高阶函数

在Python中,高阶函数是指能处理其他函数作为参数的函数,或者返回值为函数的函数。Python内置了许多高阶函数,这些函数是Python的重要特性之一,也是Python相较于其他编程语言的优秀之处之一。

1.1. map()

map()函数可以对一个序列(列表、元组等)的所有元素都进行一个指定的操作,常常和lambda表达式一起使用。

numbers = [1, 2, 3, 4, 5]

result = map(lambda x: x * 2, numbers)

print(list(result)) # [2, 4, 6, 8, 10]

map()函数将列表中的每个元素乘以2并返回一个新的列表。

1.2. filter()

filter()函数可以对序列中的每个元素进行一个指定的测试,只有符合测试条件的元素才会被返回。同样可以和lambda表达式一起使用。

numbers = [1, 2, 3, 4, 5]

result = filter(lambda x: x % 2 == 0, numbers)

print(list(result)) # [2, 4]

filter()函数筛选出了列表中所有的偶数,并返回一个新的列表。

1.3. reduce()

reduce()函数可以对一个序列中的所有元素进行汇总,支持自定义的函数作为聚合函数。在Python3中,reduce()函数已经从内置函数移到了functools模块中。

from functools import reduce

numbers = [1, 2, 3, 4, 5]

result = reduce(lambda x, y: x + y, numbers)

print(result) # 15

reduce()函数将列表中的所有元素相加并返回结果15。

1.4. sorted()

sorted()函数可以对列表或元组等序列进行排序,还支持使用自定义函数定义排序规则。

words = ['cat', 'dog', 'bird', 'fish']

result = sorted(words, key=lambda x: len(x))

print(result) # ['cat', 'dog', 'fish', 'bird']

sorted()函数按照字符串长度对单词进行排序,并返回一个新的排序后的列表。

2. 终极技巧- 多函数组合

以上四个高阶函数可以进行多种组合,实现复杂的功能。

2.1. map()和filter()

使用map()和filter()组合可以实现类似于SQL语言中的过滤和选择操作:

numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9]

result = map(lambda x: x ** 2, filter(lambda x: x % 2 == 0, numbers))

print(list(result)) # [4, 16, 36, 64]

这个例子中,首先使用filter()函数筛选所有偶数,然后使用map()函数将这些偶数平方,并得到一个新的列表。

2.2. map()和reduce()

使用map()和reduce()组合可以对列表中的所有元素进行汇总操作,例如:

numbers = [1, 2, 3, 4, 5]

result = reduce(lambda x, y: x + y, map(lambda x: x * 2, numbers))

print(result) # 30

这个例子中,首先使用map()函数将所有元素乘以2,然后使用reduce()函数将所有元素相加得到汇总结果30。

2.3. filter()和reduce()

使用filter()和reduce()组合可以对列表中的所有元素进行筛选和汇总操作,例如:

numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

result = reduce(lambda x, y: x + y, filter(lambda x: x % 2 == 0, numbers))

print(result) # 30

这个例子中,首先使用filter()函数筛选所有偶数,然后使用reduce()函数将所有偶数相加得到汇总结果30。

2.4. map()、filter()和reduce()

使用map()、filter()和reduce()组合可以完成更为复杂的功能,例如:

numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

result = reduce(lambda x, y: x + y, map(lambda x: x ** 2, filter(lambda x: x % 2 == 0, numbers)))

print(result) # 220

这个例子中,首先使用filter()函数筛选所有偶数,然后使用map()函数将这些偶数平方,最后使用reduce()函数将这些平方后的偶数相加得到汇总结果220。

3. 总结

Python内置的高阶函数在数据处理和函数式编程中起到了非常重要的作用。熟练掌握map()、filter()、reduce()和sorted()函数的使用方法,可以非常方便地进行列表、元组、字典等数据类型的处理。此外,多种高阶函数的组合可以完成更为复杂的功能,例如数据筛选、汇总等操作。

后端开发标签