在此声明, 此博客是我看过了廖雪峰老师的Python教程对此函数的理解, 旨在自我提高并将自己的感想分享给更多人。
map()接受两个参数, 一个是函数, 另一个是Iterable,意为可迭代的序列(可放入for循环进行迭代), 注意并不是Iterator,map将传入的函数作用到序列的每一个函数, 并返回Iterator。
reduce()接受两个参数, 一个是函数, 另一个是Iterable, 以下是作用代码
reduce(f, [x1, x2, x3, x4]) = f(f(f(x1, x2), x3), x4)
类似于栈结构, 从最里层把结果继续和序列的下一个元素做累积计算
eg:
from functools import reduce
def str2int(s):
def fn(x, y):
return x * 10 + y
def char2num(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(char2num, s))
这是一个很简单的代码, 不解释了。
自己明白和讲出来真的是两码事, 身为一个编程菜鸟, 需要努力的地方真的很多。
附上自己写的map() reduce()结合代码:
from functools import reduce
def str2int( s ):
def fn( x, y ):
return x * 10 + y
def char2num( 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( char2num, s ) )
print( str2int( '121234') )