美文网首页程序员
map()和reduce()函数

map()和reduce()函数

作者: 小心的我 | 来源:发表于2020-04-25 20:41 被阅读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')))

    相关文章

      网友评论

        本文标题:map()和reduce()函数

        本文链接:https://www.haomeiwen.com/subject/puhlwhtx.html