关于 reduce 和 map

一  reduce() 函数 是python 的 模块的内容,是关于累 的 计算

  在调用的时候先导入reduce模块

  reduce() 接收的参数有两个,reduce(function,sequence)

  reduce() 对 sequence (序列) 中的每一个元素反复调用function,并返回最终结果

from functools import reduce

def func(a,b):
    return a+ b
ret = reduce(func,[1,2,3,4,5])
print(ret)

ret = reduce(lambda x ,y:x+y,[1,2,3,4,5]) print(ret) 

s = sum([1,2,3,4,5])
print(s)

# 结果是  15

   上述计算实际上是对 list 的所有元素求和,虽然 python 内置了求和函数 sum,

  但是利用 reduce()也很简单

  reduce() 还可以接受第3个参数,作为计算的初始值,如果把初始值设置成100,计算:

from functools import reduce

def func(a,b):
    return a+ b

ret = reduce(func,[1,2,3,4,5],100)
print(ret)


# 结果就是   115

二 map()函数 是 python 内置的高阶函数,map(func,iter1)

  它接收一个函数func 和 一个 list,并通过把函数func 依次作用在 list 的每一个元素上

扫描二维码关注公众号,回复: 5173782 查看本文章

  得到一个新的list 并返回

   例如: 对于list[1,2,3,4,5,6,7,8,9]

  如果 希望把 list 的每一个元素都作 平方,就可以用函数 map()

 

   因此,我们只需要传入 函数 f(x) = x * x ,就可以利用 map()函数完成这个计算

lst = [1,2,3,4,5,6,7,8,9]

# 1.可以用函数方法实现

def func(x):
    return x * x

ret = list(map(func,lst))
print(ret)

# 2.可以用 lambda 函数实现
ret = list(map(lambda x:x**2,lst))
print(ret)


#3. for 循环也可以做到
lst_new = []
for i in lst:
    lst_new.append(i *i)
print(lst_new)


# 输出结果清一色的: [1, 4, 9, 16, 25, 36, 49, 64, 81]

   注意: map() 函数不改变原有的list,而是返回一个新的 list 

      利用 map()函数,可以把一个 list 转换为 另外一个 list,只需要传入转换函数

由于 list 包含的元素可以是 任何类型,因此,map() 不仅仅可以处理只包含数值的list

事实上它可以处理包含任意类型的list,只需要传入的 func 可以处理这类数据类型

猜你喜欢

转载自www.cnblogs.com/wenqi2121/p/10388458.html