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