您的位置:首页 > 编程语言 > Python开发

python——高阶函数——map reduce filter sorted

2017-04-18 23:13 651 查看

map

def double(a):
return 2 * a

def upper(str):
return str.upper()

print map(double, [1, 2, 3, 4, 5, 6, 7, 8, 9])
print map(upper, 'martin')

output:
[2, 4, 6, 8, 10, 12, 14, 16, 18]
['M', 'A', 'R', 'T', 'I', 'N']

总结:
map第一个参数为函数(1个参数),第二个参数为list
map功能把函数作用于list每个元素,返回新list

reduce

def add(a, b):
return a + b

def mul(a, b):
return a * b

print reduce(add, [1, 3 ,5 ,7, 9])
print reduce(mul, [1, 3 ,5 ,7, 9])

output:
25
945

总结:
reduct第一个参数为函数(2个参数),第二个参数为list
reduct功能使用函数作累积计算

filter

def odd(n):
return n % 2 == 1

def prime(n):
if n == 1:
return False
for i in range(2, n):
if n % i == 0:
return False
return True

print filter(odd, range(1, 21))
print filter(prime, range(1, 21))

output:
[1, 3, 5, 7, 9, 11, 13, 15, 17, 19]
[2, 3, 5, 7, 11, 13, 17, 19]

总结:
filter第一个参数为函数(1个参数,返回布尔值),第二个参数为list
fliter功能根据函数返回结果过滤元素

sorted

def asc(x, y):
if x > y:
return 1
if x < y:
return -1
return 0

def desc(x, y):
if x > y:
return -1
if x < y:
return 1
return 0

print sorted([8, 5, 58, 18, 15])
print sorted([8, 5, 58, 18, 15], asc)
print sorted([8, 5, 58, 18, 15], desc)

output:
[5, 8, 15, 18, 58]
[5, 8, 15, 18, 58]
[58, 18, 15, 8, 5]

总结:
sorted第一个参数为list,第二个参数为函数(2个参数,返回比较结果,通常规定1表示大于,-1表示小于,0表示等于)
sorted功能根据函数比较结果进行排序
注:如果第二个参数omit,直接把>或<或==运算符作用于list元素(如果list元素类型不支持>或<或==,则throw exception)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  map reduce filter sorted
相关文章推荐