`reduce` 是 Python 内置的一个高阶函数,用于对可迭代对象中的元素进行累积操作,最终返回一个结果。下面是 `reduce` 函数的基本用法:
from functools import reduce
`reduce` 函数的基本语法如下:
reduce(function, iterable[, initializer])
`function`:自定义函数,接收两个参数并返回一个结果。
`iterable`:可迭代对象,包含要进行累积操作的元素。
`initializer`(可选):初始值,默认不提供。如果提供了初始值,则在可迭代对象的第一个元素前应用初始值和第一个元素作为参数传递给 `function` 函数。
示例
计算列表中所有元素的累加和
from functools import reduce
numbers = [1, 2, 3, 4, 5]
def add(x, y):
return x + y
sum = reduce(add, numbers)
print(sum) 输出 15
将列表中的名字首字母大写,其余字母小写
from functools import reduce
names = ['adam', 'LISA', 'barT']
def normalize(name):
return name.upper() + name[1:].lower()
normalized_names = reduce(normalize, names)
print(normalized_names) 输出 ['Adam', 'Lisa', 'Bart']
计算列表中所有数字的乘积
from functools import reduce
numbers = [1, 2, 3, 4, 5]
def multiply(x, y):
return x * y
product = reduce(multiply, numbers)
print(product) 输出 120
计算字典中所有年龄的总和
from functools import reduce
scientists = [
{'name': 'Alan Turing', 'age': 105, 'gender': 'male'},
{'name': 'Dennis Ritchie', 'age': 76, 'gender': 'male'},
{'name': 'Ada Lovelace', 'age': 202, 'gender': 'female'},
{'name': 'Frances E. Allen', 'age': 84, 'gender': 'female'}
]
def sum_age(x, y):
return x['age'] + y['age']
total_age = reduce(sum_age, scientists)
print(total_age) 输出 577
注意事项
`reduce` 函数返回的是计算的结果,而不是作用后的迭代器对象。
如果 `iterable` 为空,且没有提供 `initializer`,`reduce` 将抛出一个 `TypeError`。
`reduce` 函数在 Python 3 中位于 `functools` 模块中,因此需要先导入该模块。
希望这些示例能帮助你理解 `reduce` 函数的用法。