DEV Community

Cover image for Map and Reduce in Python
Z. QIU
Z. QIU

Posted on • Edited on

3 2

Map and Reduce in Python

Map / Reduce in Python

To understand the concept, please refer to this paper of Google: link

In python 2, map() and reduce() are both built-in functions. However, since Python3, reduce() is no longer a built-in function, one should import it from functools module.
Alt Text

map() applies a function to all the items in an input list and returns an iterator object. Such like:

>> a = map(lambda x:x+x, [1,2,3,4,5])
>> list(a)
Out: [2, 4, 6, 8, 10]
Enter fullscreen mode Exit fullscreen mode

reduce() performs a rolling computation to sequential pairs of values in an input list and returning the result.
Alt Text

reduce(f, [x1, x2, x3, x4]) = f(f(f(x1, x2), x3), x4)
Enter fullscreen mode Exit fullscreen mode

Here is an example written by myself today:

from functools import reduce # only in Python 3

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

def char2num(s):
    return DIGITS[s] 

def str2float(s): 
    L = map(char2num, s)
    r = reduce(func,L)
    print(r)
    return r[0]

def func(x, y):

    if type(x) == int:
        if x == -1:
            return (0 + y, 0.1)
        elif y == -1:
            return(x, 0.1)
        else:
            return (x*10+y, 1)
    elif type(x) == tuple:

        if y == -1:
            return(x[0], 0.1)
        else:
            if x[1]< 1:
                res = x[1]*0.1
                return(x[0]+y*x[1], res)
            else:
                res = 1
                return(x[0]*10+y, res)

if __name__ == "__main__":
    #print('str2float(\'123.456\') =', str2float('123.456'))
    if abs(str2float('123.4') - 123.4) < 0.00001:
        print('测试成功!')
    else:
        print('测试失败!')

    if abs(str2float('123456') - 123456) < 0.00001:
        print('测试成功!')
    else:
        print('测试失败!')

    if abs(str2float('0.123456') - 0.123456) < 0.00001:
        print('测试成功!')
    else:
        print('测试失败!')

Enter fullscreen mode Exit fullscreen mode

reference:

  1. https://www.liaoxuefeng.com/wiki/1016959663602400/1017329367486080
  2. https://book.pythontips.com/en/latest/map_filter.html

Image of Datadog

How to Diagram Your Cloud Architecture

Cloud architecture diagrams provide critical visibility into the resources in your environment and how they’re connected. In our latest eBook, AWS Solution Architects Jason Mimick and James Wenzel walk through best practices on how to build effective and professional diagrams.

Download the Free eBook

Top comments (0)

Billboard image

The Next Generation Developer Platform

Coherence is the first Platform-as-a-Service you can control. Unlike "black-box" platforms that are opinionated about the infra you can deploy, Coherence is powered by CNC, the open-source IaC framework, which offers limitless customization.

Learn more