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)