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()函数的使用方法,可以非常方便地进行列表、元组、字典等数据类型的处理。此外,多种高阶函数的组合可以完成更为复杂的功能,例如数据筛选、汇总等操作。