map函数
map()
函数接收两个参数,一个是函数,一个是Iterable
,map
将传入的函数依次作用到序列的每个元素,并把结果作为新的Iterator
返回
lst = [1,2,3,4,5]
def add(x):
return x + x
s = map(add,lst)
new_lst = list(s)
print(new_lst)
高阶函数有一个优点就是,可以让代码变得更加简洁,比如将一个list的数字都转换为字符串
一般的实现方式如下
lst = [1,2,3,4,5]
new_list = []
for item in lst:
new_list.append(str(item))
print(new_list)
map函数只需要一行代码即可
print(list(map(str,[1, 2, 3, 4, 5])))
reduce函数
from functools import reduce
def f(x, y):
return x * 10 +y
print(reduce(f, [1,2,3,4,5]))
map函数和reduce函数结合一起用
from functools import reduce
DIGITS = {'0': 0, '1': 1, '2': 2, '3': 3, '4': 4, '5': 5, '6': 6, '7': 7, '8': 8, '9': 9}
def str2int(s):
def f(x, y):
return x * 10 +y
def char2num(s):
return DIGITS[s]
return reduce(f, map(char2num, s))
str2int('123456')
filter函数
接收两个参数,第一个为函数,第二个为序列,序列的每个元素作为参数传递给函数进判断,然后返回 True 或 False,最后将返回 True 的元素放到新列表中
#filter()过滤出1~100中平方根是整数的数
import math
def is_sqr(x):
r = int(math.sqrt(x))
return r ** 2 == x
print filter(is_sqr, range(1, 101))
sorted函数
sorted([36, 5, -12, 9, -21], key=abs)