1.map
- map
需求:对单个或多个可迭代对象并行运算,返回一个新的可迭代对象
for i in map(lambda x,y:x+y, [1,2,3,4,5],[1,2,3,4,5]): #对单个或多个可迭代对象并行运算,返回一个新的可迭代对象
print(i,end=' ')
list(map(lambda x,y:x+y, [1,2,3,4,5],[1,2,3,4,5]))
需求:批量提取字符串并转换类型
a,b,c = map(int,"2020-11-26".split('-')) #批量提取字符串并转换类型
print(a,b,c)
2. reduce
需求:对可迭代对象,进行累计操作,比如累加
from functools import reduce
reduce(lambda x,y:x+y,[1,2,3,4,5]) #对可迭代对象,进行累计操作,比如累加
3. filter
需求:筛选出可迭代对象中满足条件的数值
list(filter(lambda x:x % 2 == 0,[1,2,3,4,5])) #筛选出可迭代对象中满足条件的数值
4. pool.map with partial
需求:pool.map中传入 除可迭代对象外的 其他参数。
# -*- coding: utf-8 -*-
from multiprocessing import Pool
from functools import partial # 导入偏函数
import numpy as np
def adjust(mean, number):
print("mean: %f number: %.2f" % (mean, number))
return abs(float("%.2f" % (mean - number)))
if __name__ == "__main__":
num_list = [12, 45, 67, 88, 99, 62]
num_mean = np.average(num_list) # 计算均值
pool = Pool(4) # 定义进程池
p_func = partial(adjust, num_mean) # 定义偏函数,并传入均值
res_list = pool.map(p_func, num_list) # 执行map,传入列表
print(res_list)
结果:
(base) D:\Pycharm Pro\senseTimePro>python hkjhk.py
mean: 62.166667 number: 12.00
mean: 62.166667 number: 45.00
mean: 62.166667 number: 67.00
mean: 62.166667 number: 88.00
mean: 62.166667 number: 99.00
mean: 62.166667 number: 62.00
[50.17, 17.17, 4.83, 25.83, 36.83, 0.17]