map函数时python的高级内置函数

语法为:map(function, iterable, ...)

参数:
function -- 函数
iterable -- 一个或多个序列
将function作用于iterable序列中的每一个元素,并将调用的结果返回
主要是为了并行运算,非常高效

1. 一个输入参数,输入为列表

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

2. 一个输入参数,输入为元组

a2 = map(map_func, (1,2,3))
print(a2)

3. 两个输入参数

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

4. 使用int等类型函数

# 4. 典型应用:int等类型函数
a4 = map(int, [1.5,2.1,3.0]) #同时从两个序列中取出相同位置的元素,进行运算;但是两个参数不同长度时会报错
print(list(a4)) #输出:[1, 2, 3] a5 = map(int, '') #将字符串元素变成整数
print(list(a5)) #输出:[1, 2, 3, 0, 6]

5. 使用lambda表达式

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

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

函数将一个数据集合(列表,元组等)中的所有数据进行下列操作:用传给 reduce中的函数 function(二元函数,两个参数),先对集合中的第 1、2 个元素进行操作,得到的结果再与第三个数据用 function 函数运算,依次进行下去直到最后。

用法:reduce(function, iterable[, initializer])

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

1. "减少"为一个值

from functools import reduce
def add_2(x, y):
return x+y
a7 = reduce(add_2, [1,2,3]) #得到的是一个值,依次执行add_2(1,2),对结果和3执行add_2(add_2(1,2),3),有点类似递归运算
print(a7) #输出为:6

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. 减少矩阵维度

# 减少矩阵维度
import numpy as np
tmp = np.mat([[1,2,3],[4,5,6],[7,8,9]])
print(tmp)
# 输出为:
# [[1 2 3]
# [4 5 6]
# [7 8 9]]
a9 = reduce(lambda x,y: x+y, tmp) #实际是:首先[1,2,3]+[4,5,6] = [5,7,9];然后[5,7,9] + [7,8,9] = [12,15,18]
print(a9) # 输出:[[12 15 18]],是(1,3)的矩阵

其中,还有filter函数也与此类似。

参考:

https://baijiahao.baidu.com/s?id=1594702528079035916&wfr=spider&for=pc

https://blog.csdn.net/wxjsjp/article/details/80638696

https://www.runoob.com/python/python-func-map.html

https://www.runoob.com/python/python-func-reduce.html

https://blog.csdn.net/ctan006/article/details/79657678

最新文章

  1. jquery animate 动画效果使用解析
  2. [git] git代理及常用命令,远程桌面代理
  3. js 倒计时实现
  4. Java多线程系列--“基础篇”05之 线程等待与唤醒
  5. 颜色渐变的JS代码
  6. dreamwaver的动态相关文件 工具栏搜索
  7. elixir学习
  8. 【转】Core Bluetooth框架之一:Central与Peripheral
  9. HDU 1540 / POJ 2892 Tunnel Warfare (单点更新,区间合并,求包含某点的最大连续个数)
  10. Java web 项目搭建
  11. CentOS搭建OpenVPN服务(简易版)
  12. DiscreteSeekBar----&gt;SeekBar的使用
  13. Android中网络流量控制(防火墙)——Iptables
  14. 转Rollback后undo到底做了些什么?
  15. MVC无刷新查询,PagedList分页控件使用,导出Excel
  16. Python 文件的处理
  17. linux系统下安装配置解压版的MySQL数据库
  18. Haproxy配置文件(2)
  19. java:list排序
  20. 如何降低90%Java垃圾回收时间?以阿里HBase的GC优化实践为例

热门文章

  1. MySQL数据类型:UNSIGNED注意事项(转)
  2. 配置Pods和containers--为Containers和Pods分配CPU资源
  3. RunTime总结:
  4. EasyNVR网页摄像机无插件H5、谷歌Chrome直播方案安装使用常见问题的分析
  5. WEBSHELL-恶意代码检测
  6. [Swoole入门到进阶] [公开课] Swoole协程-Swoole4.4.4 提供 WaitGroup 功能
  7. Java 注解基本原理
  8. Linux安装zookeeper3.5.6
  9. GitHub: Oracle Database on Docker 为测试 改天试试
  10. linux安装Elasticsearch详细步骤