本文共 1744 字,大约阅读时间需要 5 分钟。
Python中的map、reduce、filter函数,以及sorted函数,是处理序列的高阶函数,能够简化代码并提高效率。以下是对这些函数的详细介绍和使用方法:
作用:根据提供的函数对指定序列中的每个元素进行映射,返回一个新的迭代器。
m = map(lambda x: x*x, [1, 2, 3])print(list(m)) # 输出: [1, 4, 9]
m = map(lambda x, y: x+y, [1, 2, 3], [4, 5, 6])print(list(m)) # 输出: [5, 7, 9]
作用:对序列中的元素进行累积操作,返回一个单一结果。
from functools import reducer = reduce(lambda x, y: x+y, [1, 2, 3, 4]) # 输出: 10r = reduce(lambda x, y: x+y, [1, 2, 3, 4], 5) # 初始值5,输出: 15
作用:根据函数返回值对序列进行过滤,返回一个新的迭代器。
f = filter(lambda x: x%2, [1, 2, 3, 4])print(list(f)) # 输出: [1, 3]f = filter(None, "hello")print(list(f)) # 输出: ['e', 'l', 'l', 'o']
作用:对可迭代对象进行排序,可指定排序键和方向。
L1 = [36, 5, -12, 9, -21]sorted_L1 = sorted(L1) # 输出: [-21, -12, 5, 9, 36]sorted_L1 = sorted(L1, key=abs) # 输出: [-21, -12, 5, 9, 36]sorted_L1 = sorted(L1, key=abs, reverse=True) # 输出: [36, 9, 5, -12, -21]
L2 = ['bob', 'about', 'Zoo', 'Credit']sorted_L2 = sorted(L2) # 输出: ['Credit', 'about', 'bob', 'Zoo'](按ASCI码)sorted_L2 = sorted(L2, key=str.lower) # 输出: ['about', 'bob', 'Credit', 'Zoo']
L3 = [('Bob', 75), ('Adam', 92), ('Bart', 66), ('Lisa', 88), ('haoZhang', 22)]def fn(t): return t[0].lower()sorted_L3 = sorted(L3, key=fn) # 输出: [('adam', 92), ('bart', 66), ('bob', 75), ('haozhang', 22), ('lisa', 88)]
作用:定义一次性使用的函数,简化代码。
f = lambda x: x*xprint(f(2), f(4)) # 输出: 4 16
def fn(x, y): return (lambda x, y: x + y)f2 = fn(3, 4)print(f2(3, 4)) # 输出: 7
L = list(filter(lambda x: x%2 == 1, range(1, 20)))print(L) # 输出: [1, 3, 5, ..., 19]
通过合理使用这些高阶函数,可以有效地处理数据序列,提升代码的简洁性和效率。
转载地址:http://ssrfk.baihongyu.com/