Python3 map/reduce/filter 示例(qbit)

运行环境

Windows 10
Python 3.8.2
PyFunctional 1.3.0

示例

  • 原料
lst = [-2, -1, 0, 1, 2]

筛正数(filter)

# 方式一
list(filter(lambda x: x>0, lst))
# 方式二
[x for x in lst if x>0]

output

[1, 2]

翻倍(map)

# 方式一
list(map(lambda x: x*2, lst))
# 方式二
[x*2 for x in lst]

output

[-4, -2, 0, 2, 4]

求和(reduce)

# 方式一
from functools import reduce
reduce(lambda x,y: x+y, lst)
# 方式二
total = 0
for x in lst:
   total += x
total

output

0

筛正数 + 翻倍 + 求和

lst = [-2, -1, 0, 1, 2]
from functools import reduce
# 方式一
reduce(lambda x,y: x+y,map(lambda x: x*2, filter(lambda x: x>0, lst)))

# 方式二
total = 0
for x in [x*2 for x in [x for x in lst if x>0]]:
   total += x
total

# 方式三(借助第三方库 PyFunctional)
from functional import seq
seq(lst) \
    .filter(lambda x: x>0) \
    .map(lambda x: x*2) \
    .reduce(lambda x, y: x + y)

output

6
本文出自 qbit snap

你可能感兴趣的:(python,mapreduce,filter,函数式编程)