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

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,python)