python内置(builtins)的高阶函数:
map, filter, sorted
map 函数:
map(func, *iterables) 用函数对可迭代对象中的每一个元素作为参数计算出新的可迭代对象,当最短的一个可迭代对象不再提供数据时,此可迭代对象生成结束
示例 :
# 生成一个可迭代对象,要求此可迭代对象可以生成1~9自然数的平方
1, 4, 9, 16, .... 81
def power2(x):
return x**2
for x in map(power2, range(1, 10)):
print(x)
# 求以上数据的和 1 + 4 + 9 + 16 + ... + 81
print(sum(map(power2, range(1, 10))))
示例:
# 生成一个可迭代对象, 要求此可迭代对象生成
# 1**4, 2**3, 3**2, 4**1
# 1 8 9 4
for x in map(pow, [1,2,3,4], [4,3,2,1]):
print(x)
filter函数:
格式:
filter(func, iterable)
作用:
筛选可迭代对象iterable中的数据,返回一个可迭代对象,此可迭代对象将对iterable进行筛选
函数func 将对iterable中的每个元素进行求值,返回False时将此数据丢弃,返回True,则保留此数据
示例:
# isodd函数判断x是否为奇数,是奇数返回True
def isodd(x):
return x % 2 == 1
# 打印10以内的奇数:
for x in filter(isodd, range(10)):
print(x)
# 生成10以内所有偶数的列表,用filter实现
L = [x for x in filter(lambda x: x%2==0, range(10))]
sorted 函数:
作用:
将原可迭代对象的数据进行排序,生成排序后的列表
格式:
sorted(iterable, key=None, reverse=False)
参数说明:
iterable 可迭代对象
key 绑定函数,此函数用来提供一个排序的依据
reverse 标志用来设置是否降序排序(从大到小)
示例:
L = [5, -2, -4, 0, 3, 1]
L2 = sorted(L) # L2 = [-4, -2, 0, 1, 3, 5]
L3 = sorted(L, reverse=True) L3=[5,3,1...]
L = [5, -2, -4, 0, 3, 1]
# 依据: abs(5), abs(-2), abs(-4), abs(0), ...
L4 = sorted(L, key=abs) # L4 =[0, 1, -2, 3, -4, 5]
names = ['Tom', 'Jerry', 'Spike', 'Tyke']
L = sorted(names) # L = ['Jerry', 'Spike', 'Tom', 'Tyke']
# 能否根据名字的长度进行排序?
L2 = sorted(names, key=len) # L2 = ['Tom', 'Tyke', 'Jerry', 'Spike']
def fr(s):
return s[::-1]
L3 = sorted(names, key=fr)