reduce()函数

2017年8月27日 22:02 447  0  python 内置函数

reduce( )函数是Python内置的一个高阶函数。

reduce():

  • reduce把一个函数作用在一个序列上
  • 这个函数必接收两个参数
  • reduce把结果继续和序列的下一个元素做累积计算
  • reduce(f,[x1, x2, x3, x4])= f(f(f(x1, x2), x3), x4)

ex.1:写一个函数返回两数之和,调用reduce()返回list里所有数的和

def f(x, y):
    return x+ y

alist = [1, 3, 5, 10, 11]

# 调用reduce()函数
reduce(f, alist)
# 结果为30

# reduce还可以接收第3个参数,这个参数作为计算的初始值
reduce(f, alist, 100)
# 结果为 130
# 第一次计算为f(100, 1)

ex,2:不用int()函数,将ex.1稍加改动,配合map(),可以写出将str转化为int的函数

def fn(x, y):
    return x * 10 + y

def char_to_num(s):
    return {'0': 0, '1': 1, '2': 2, '3': 3, '4': 4, '5': 5, '6': 6, '7': 7, '8': 8, '9': 9}[s]

reduce(fn, map(char_to_num, '13579'))
# 13579

#整理成一个str2int的函数就是:
def str_to_int(s):
     def fn(x, y):
          return x * 10 + y
     def char_to_num(s):
          return {'0': 0, '1': 1, '2': 2, '3': 3, '4': 4, '5': 5, '6': 6,
'7': 7, '8': 8, '9': 9}[s]
     return reduce(fn, map(char_to_num, s))

#还可以用lambda函数进一步简化成:
def char_to_num(s):
     return {'0': 0, '1': 1, '2': 2, '3': 3, '4': 4, '5': 5, '6': 6, '7':
7, '8': 8, '9': 9}[s]
def str_to_int(s):
     return reduce(lambda x, y: x * 10 + y, map(char_to_num, s))