Python中如何使用reduce()函数进行列表操作
reduce()函数是Python内建函数之一,在Python 2中是内建函数,Python 3中需要从functools模块中进行导入,reduce()函数的作用是对一个序列进行归约操作,最终返回一个单一的结果,这个结果可以是一个数值、一个字符串或者一个列表等任何类型。reduce()函数常常与lambda表达式相结合使用,是一个十分强大的函数。
reduce()函数的语法如下:
reduce(function, sequence[, initial])
其中,function表示要对序列进行的操作函数,这个函数必须自己接收两个参数: 个参数是上一次循环的结果,第二个参数是当前的元素;sequence表示要进行归约操作的序列,这个序列可以是列表、元组、集合等;initial表示初始值,表示 次归约的时候要使用的值。initial是可选参数,如果不提供,reduce()函数将从序列的 个元素开始循环。
使用reduce()函数进行列表操作的时候,需要首先定义一个归约函数,这个函数要接收两个参数, 个参数表示归约的结果,第二个参数表示当前的元素,然后在这个函数里进行列表操作。
下面给出几个例子,说明reduce()函数如何进行列表操作。
例1:计算列表中所有元素的和
from functools import reduce
lst = [1, 2, 3, 4, 5]
def add(x, y):
return x + y
result = reduce(add, lst)
print(result)
输出结果为15,这个结果是1+2+3+4+5的和。
首先定义了要进行归约的序列lst,然后定义了归约函数add,这个函数接收两个参数,把它们相加并返回结果,然后使用reduce()函数对lst进行归约操作,得到最终结果。
例2:计算列表中所有元素的乘积
from functools import reduce
lst = [1, 2, 3, 4, 5]
def mul(x, y):
return x * y
result = reduce(mul, lst)
print(result)
输出结果为120,这个结果是1×2×3×4×5的积。
与例1类似,只是把归约函数改成了mul函数,这个函数把传入的两个参数相乘并返回结果。
例3:把列表中的所有元素转换成字符串并拼接到一起
from functools import reduce
lst = ['A', 'B', 'C', 'D', 'E']
def concat(x, y):
return x + y
result = reduce(concat, lst)
print(result)
输出结果为'ABCDE',这个结果是把列表中的所有元素拼接到一起得到的字符串。
归约函数concat只是简单地把两个字符串拼接到一起。
例4:找出列表中的最大值
from functools import reduce
lst = [3, 7, 2, 9, 5]
def max(x, y):
if x > y:
return x
else:
return y
result = reduce(max, lst)
print(result)
输出结果为9,这个结果是列表中的最大值。
归约函数max用于比较两个元素的大小,返回较大的那个。
例5:把列表中的所有元素转换成大写字母
from functools import reduce
lst = ['apple', 'banana', 'orange']
def upper(x, y):
return x + y.upper()
result = reduce(upper, lst, '')
print(result)
输出结果为'APPLEBANANAORANGE',这个结果是把列表中的所有元素转换成大写字母并拼接到一起得到的字符串。
归约函数upper用于把列表中的元素转换成大写字母,这里使用了一个初始值'',表示 次归约的时候要使用的值。
从上面的例子可以看出,reduce()函数可以根据需要定义不同的归约函数,然后对序列进行归约操作,得到最终的结果。reduce()函数常常用于进行数值计算、列表操作等,是Python中一个非常实用的函数。
