关于 reduce 和 map

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

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

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

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

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,code

  可是利用 reduce()也很简单blog

  reduce() 还能够接受第3个参数,做为计算的初始值,若是把初始值设置成100,计算:it

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)io

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

  获得一个新的list 并返回class

   例如: 对于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 能够处理这类数据类型

相关文章
相关标签/搜索