阿宁的Python学习-----map/reduce函数

map()

map()方法会将一个函数映射到序列的每一个元素上,生成新序列,包含所函数返回值。

语法:

map(function, iterable, ...)
function -- 函数
iterable -- 一个或多个序列

也就是说序列里每一个元素都被当做x变量,放到一个函数f(x)里,其结果是f(x1)、f(x2)、f(x3)…组成的新序列。

在这里插入图片描述

def f(x):
    return x*x
r = map(f,[1,2,3,4,5,6,7,8,9])
print(list(r))
#输出结果
[1, 4, 9, 16, 25, 36, 49, 64, 81]

1、一个输入参数,输入为元组

def map_num(x):
    res = x**2
    return res
a = map(map_num,(1,2,3))   #直接返回的是object,例如 <map object at 0x000001FEF3457438>
print(a1)
print(list(a))  #强制转换   [1, 4, 9]

2、输入两个参数

def map_num(x,y):
    res = x+y
    return res
a = map(map_num,[1,2,3],[1,2,3])   #同时从两个序列中取出相同位置的元素,进行运算;但是两个参数不同长度时会报错
print(list(a))   #输出结果  [2, 4, 6]

3、使用int等类型函数

a1 = map(int, [1.5,2.1,3.0]) #同时从两个序列中取出相同位置的元素,进行运算;但是两个参数不同长度时会报错
print(list(a4))  #输出:[1, 2, 3]

a2 = map(int, '12306')  #将字符串元素变成整数
print(list(a5))  #输出:[1, 2, 3, 0, 6]

4、使用lambda表达式

# 使用lambda函数,x为参数,x**2属于lambda表达式的返回值
a3 = map(lambda x: x ** 2, [1, 2, 3])
print(a6)
print(list(a6))  # 输出:[1, 4, 9]

reduce()

reduce函数,与map函数类似,注意在Python3中reduce不再是内置函数,而是集成到了functools中,需要:from functools import reduce

reduce的工作过程是 :在迭代序列的过程中,首先把 前两个元素(只能两个)传给 函数,函数加工后,然后把 得到的结果和第三个元素 作为两个参数传给函数参数, 函数加工后得到的结果又和第四个元素 作为两个参数传给函数参数,依次类推。

preview

用法:

reduce(function, iterable[, initializer])
参数:
function -- 函数,有两个参数
iterable -- 可迭代对象
initializer -- 可选,初始参数

1、累加运算

from functools import reduce
def add(x,y):
    return x+y
a = reduce(add,[1,2,3])
print(a)

2、lambda表达式调用

# lambda函数使用, x,y为参数,x+y为lambda表达式的返回值
a8 = reduce(lambda x, y: x+y, [1,2,3])  #得到的是一个值,先调用参数1,2,然后对结果和3继续使用
print(a8) #输出为:6

3、求10的阶乘

from functools import reduce
def add(x,y):
    return x*y
items = range(1,11)
result = reduce(add, items)
print(result)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值