map/reduce

Reads: 668 Edit

1 map()函数

map()函数可以将输入变量依次带入指定函数进行运算。

1.1 批量计算数据的平方

def sq(n):							# 定义平方函数
    return n * n


x = [1, 2, 3, 4, 5, 6]
y = list(map(sq, x))				# 调用map()函数,第一个参数是自定义的sq()函数,第二个参数是列表变量x;结果返回列表变量y。

print(y)

运行结果

[1, 4, 9, 16, 25, 36]

1.2 批量计算变量的最大值和最小值

x1 = [41, 68, 47, 87, 39, 46, 102, 77, 51]
x2 = [329, 241, 864, 375, 224, 148, 504, 694, 417]
x3 = [0.54, 0.74, 0.09, 0.33, 0.51, 0.49, 0.27, 0.19, 0.82]

x=[x1, x2, x3]

x_max = list(map(max, x))
x_min = list(map(min, x))

print(x_max)
print(x_min)

运行结果

[102, 864, 0.82]
[39, 148, 0.09]

说明:通过map()函数,同时计算出来x1、x2和x3的最大值与最小值。

2 reduce()函数

reduce()函数可以将列表x中前n个数据带入指定函数进行运算,并将输出结果m加入列表x中并与余下的数据重复进行前面的计算过程。

2.1 利用reduce函数求n的阶乘

from functools import reduce


def my_multi(a, b):
    return a * b


x = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
y = reduce(my_multi, x)						# 计算过程为1,2带入my_multi()函数,输出结果2加入列表x中;2,3再次带入my_multi()函数进行计算,输出结果6加入列表x中,6,4再次带入my_multi()函数进行计算,....。

print(y)

运行结果

3628800

2.2 利用reduce函数求一组变量的最大值

from functools import reduce


def my_sort(a, b):
    if a >= b:
        return a
    else:
        return b


x = [41, 68, 47, 87, 39, 46, 102, 77, 51]
y = reduce(my_sort, x)						# 两辆比较返回较大值,并继续后面的数据比较

print(y)

运行结果

102

Comments

Make a comment