02-高阶函数 map filter sorted
什么是高阶函数 满足下列条件中一个的函数即为高阶函数 1. 函数接受一个或多个函数作用参数传入 2. 函数返回一个函数 map 函数 map(func, *iterable) 返回一个可迭代对象,此可迭代 对象用函数 func对可迭代对象iterable中的每一个 元素作用参数计算后得一结果,当最短的一个可迭代对 象不再提供数据时可迭代对象生成数据结束 示例: def power2(x): return x ** 2 # 生成一个可迭代对象,此可迭代对象可以生成1~9的 # 整数的平方 for x in map(power2, range(1, 10)): print(x) # 生成一个可迭代对象, 此可迭代对象可以生成: 1**4, 2**3, 3**2, 4**1 def mypower2(x, y): return x ** y for x in map(mypower2,[1,2,3,4],[4,3,2,1]): print(x) # 看懂下面程序在做什么: for x in map(pow, [1,2,3,4], [4,3,2,1], range(5, 10)): print(x) 练习: 1. 求: 1**2 + 2**2 +3**2 +...+9**2的和 2. 求: 1**3 + 2**3 +3**3 +...+9**3的和 3. 求: 1**9 + 2**8 + 3**7 + ... + 9**1的和 filter函数: filter(function, iterable) 返回一个可迭代对象 此可迭代对象将iterable提供的数据用函数function 进行筛选,function将对iterable中的每个元素求值 返回False将此数据丢弃,返回True则保留 示例: def isodd(x): return x % 2 == 1 # 打印0~10之间所有的奇数: for x in filter(isodd, range(11)): print(x) for x in filter(lambda x:x%2, range(11)): print(x) L = [x for x in filter(isodd, range(11))] 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) # 从大到小排序 L4 = sorted(L, key=abs) # L4=[0, 1, -2, 3, -4, 5] # 依据 0, 1, 2, 3, 4, 5 names = ['Tom', 'Jerry', 'Spike', 'Tyke'] sorted(names) # ['Jerry', 'Spike', 'Tom', 'Tyke'] sorted(names, key=len) sorted(names, key=len, reverse=True) 练习: names = ['Tom', 'Jerry', 'Spike', 'Tyke'] 排序的依据是: 'moT' 'yrreJ' 'ekipS' 'ekyT' 结果: ['Spike', 'Tyke', 'Tom', 'Jerry']