前言:在学习感知机,遇到了python2写的map代码,而本人用的是python3,运行不了,于是发现两个版本中的map存在着差别。顺利也学习了reduce,filter的相关知识,记录一下
map: 函数需要输入一个参数
功能:把列表里的每一个数都分别独立的用函数做处理
python2中返回的是列表
python2返回的是"map"类型,可以用for遍历,也可以用list转换为列表
python3例:
def square(x):
return x**2
y = map(square, [1,2,3,4,5])
print (type(y))
print (list(y))
结果:
<class 'map'>
[1, 4, 9, 16, 25]
reduce:函数需要输入两个参数
功能:把列表中的相邻两个数送入到的函数处理后把结果放到列表的第一位继续重复这样的操作直至结束
例:
from functools import reduce
def square(x,y):
return x*y
y = reduce(square, [1,2,3,4,5])
print (y)
结果:
120
filter:函数需要输入一个参数
功能:把列表中不满足函数条件的给滤除
例:
def square(x):
return x%4 == 0
y = filter(square, [1,2,3,4,5])
print (type(y))
y = [i for i in y]#这里不能使用list转换
print (y)
结果:
<class 'filter'>
[4]