程序员

map()和reduce()函数

2020-04-25  本文已影响0人  小心的我

1)map()函数接收两个参数,一个是函数,一个是Iterable.map将传入的函数依次作用到序列的每个元素,并把结果作为新的Iterator返回。

把f(x)作用在list的每一个元素并把结果生成一个新的list

def f(x):

    return x * x

r = map(f, [1, 2, 3])

print(list(r))  #结果打印[1,4,9]

map()传入的第一个参数是f,函数本身;结果r是一个Iterator(惰性序列),通过list()函数计算整个序列,并返回一个list

#循环打印结果

L = []

for n in [1,2,3]:

    L.append(f(n))

print(L)

map()作为高阶函数,把运算规则抽象了,可以计算任意复杂的函数,如:把list所有数字转换为str

x = list(map(str,[1,2,3]))

print(x)

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

reduce(f,[x1,x2,x3])=f(f(x1,x2),x3)

def add(x, y):

    return x + y

y = reduce(add, [1, 2, 3, 4])

把序列[1,2,3,4]变为[1234]

def fn(x, y):

    return x * 10 + y

y = reduce(fn, [1, 2, 3, 4])

3)map与reduce结合,将str序列转换为int

def fn(x, y):

    return x * 10 + y

def char2num(s):

    digits = {'0':0,'1':1,'2':2,'3':3,'4':4,'5':5,'6':6,'7':7,'8':8,'9':9}

    return digits[s]

print(reduce(fn,map(char2num,'23445')))

上一篇下一篇

猜你喜欢

热点阅读