Python学习笔记之reduce()

    xiaoxiao2022-07-04  173

    reduce() 函数接收两个参数,第一个参数是函数(称之为 f ),这个函数 f 必须接收两个参数,第二个参数是只能是一个 list。reduce() 函数的使用过程如下:

    首先取出 list 的前两个元素,传入 f 并计算结果(A);然后将结果(A)作为第一个参数,list 中的第三个元素作为第二个参数继续传入 f 计算结果(B);再将结果(B)作为第一个参数, list 中的第四个元素作为第二个参数继续传入 f 计算结果(C);如此反复直到 list 所有元素都计算完。

    简而言而,reduce 把结果继续和序列的下一个元素做累积计算。效果如下: reduce(f, [x1, x2, x3, x4]) = f(f(f(x1, x2), x3), x4) 同时还需要注意,调用 reduce() 函数需要从Python库中导入,导入代码如下:

    from functools import reduce

    下面举几个例子来体现 reduce() 函数的强大:

    将一个序列 [1, 3, 5, 7, 9] 变换成整数 13579 # 将一个序列 [1, 3, 5, 7, 9] 变换成整数 13579 from functools import reduce def fn(x, y): return x * 10 + y reduce(fn, [1, 3, 5, 7, 9]) # 返回结果 # 13579 写一个函数,实现将一个字符串转化为整数 # 写一个把字符串转化为整数的函数 from functools import reduce DIGITS = {'0': 0, '1': 1, '2': 2, '3': 3, '4': 4, '5': 5, '6': 6, '7': 7, '8': 8, '9': 9} def str2num(s): def fn(x, y): return x * 10 + y def char2num(ch): return DIGITS[ch] return reduce(fn, map(char2num, s)) # 需要用到 map() 函数的原因: # map 的第二个参数是一个Iterable,而 reduce 函数第二个参数只能是一个 list,所以必须通过 # map() 函数将 str 转换成 list
    最新回复(0)