一、map()是内置的高阶函数,用于对序列内每个元素操作,得到新序列,不改变原序列的值,语法如下:
map(function,list)
其中 function 是你要对 list 中每个元素操作的函数,list 是你要进行操作的可迭代的数据 (例如 列表,字符串,)
map() 函数会得到一个新的 list 并返回
例如:list_1=[1,2,3,4,5]
map(lambda x:x+1,list_1) 返回的是一个Iterator
,也就是一个惰性序列,需要用 list() 函数获得所有元素值
list(map(lambda x:x+1,list_1)) 会得到一个新列表
>>> list_1=[1,2,3,4]
>>> map(lambda x:x+1,list_1)
<map object at 0x000002895EB0C710>
>>> list(map(lambda x:x+1,list_1))
[2, 3, 4, 5]
# 将字符串数组转换为整数数组
>>> arr = ['1', '2', '3']
>>> list(map(int, arr))
二、reduce()函数是内置函数,用于
reduce()函数需要导入
from functools import reduce
reduce(function,list,init) 其中 init 为初始值,可以不写
reduce
把一个函数作用在一个 list 序列[x1, x2, x3, ...]
上,这个函数必须接收两个参数,reduce
把结果继续和序列的下一个元素做累积计算。其效果就是:
reduce(f, [x1, x2, x3, x4]) = f(f(f(x1, x2), x3), x4)
>>> from functools import reduce
>>> num_1=[1,2,3,100]
>>> print(reduce(lambda x,y:x+y,num_1))
106
三、filter()函数是内置函数,用于过滤序列,得到新序列,不改变原序列的值,语法如下:
filter(function,list)
filter是把传入的函数 function 依次作用在 list 中每个元素,然后根据返回值是 True 还是 False 判断是否保留该元素
例如:list_2=['ast','bst','c','dst']
>>> filter(lambda x:x.endswith('st'),list_2) 返回的是一个Iterator
,也就是一个惰性序列,需要用 list() 函数获得所有元素值
>>> list(filter(lambda x:x.endswith('st'),list_2))
>>> list_2=['ast','bst','c','dst']
>>> filter(lambda x:x.endswith('st'),list_2)
<filter object at 0x0000028EADEFC710>
>>> list(filter(lambda x:x.endswith('st'),list_2))
['ast', 'bst', 'dst']