高阶函数map_reduce_sorted_filter
Posted 菜花教授
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了高阶函数map_reduce_sorted_filter相关的知识,希望对你有一定的参考价值。
能够把函数当成参数传递的参数就是高阶函数
map
1 map: 2 功能: 拿iterable的每一个元素放入func中, 3 func的返回值放入迭代器内进行返回 4 5 参数: iterable, func 6 返回: 迭代器 7 8 # ["a","c","b"] => [97,99,98] 9 dictvar = {97:"a",98:"b",99:‘c‘,100:‘d‘,101:‘e‘} 10 def func(x): 11 print(1) 12 for k, v in dictvar.items(): 13 if v == x: 14 return k 15 li = ["a","c","b"] 16 res = map(func, li) 17 print(list(res))
reduce
1 # 需要导入 2 from functools import reduce 3 """ 4 功能: 第一次拿出iterable的元素, 放入func中进行计算 5 计算结果再和iterable的下一个元素传入func进行计算, 6 以此类推直到最后一个,计算的结果作为返回值返回 7 参数: func iterable 8 返回: 最后一次调用func的计算结果 9 10 """ 11 12 # (1)[5,4,8,8] => 整型5488 13 li = [5,4,8,8] 14 def func(x, y): 15 return x*10 + y 16 res = reduce(func, li) 17 print(res)
sorted
""" 功能: 把iterable的每一个元素放入func中获取返回值, 按照返回值对原元素进行排序(不会修改原变量) 参数: iterable, reverse(False默认从小到大), key=func 返回值: 排序后的一个列表 如果func返回值一样, 就按照字面顺序不动 [-1, -11, 99, 89] 余数都是9, 排序后与原列表保持一致(无论正序倒序) """ listvar = (3.14,56,-9,1) res = sorted(listvar, reverse=False) # 小到大 res = sorted(listvar, reverse=True) # 大到小 print(res) # 使用abs()进行绝对值排序 listvar = [-1,99,78,-33] res = sorted(listvar, reverse=True, key=abs) print(res) # 按照余数排序 def func(x): return x % 10 listvar = [-1,99,78,-33] res = sorted(listvar, key=func) print(res)
filter
1 """ 2 功能: 过滤, 3 把iterable的每一个元素依次放入func, 4 返回True就保留, 返回False就丢弃 5 参数: func, iterable 6 返回: 过滤后的迭代器 7 """ 8 9 listvar = [1,2,3,4,5,6,7,8,9] 10 # 过滤所有的奇数 要偶数 11 def func(x): 12 if x % 2==0: 13 return True 14 return False 15 16 res = filter(func, listvar) 17 print(list(res)) 18 19 20 # 使用lambda简化 21 res = filter(lambda x : True if x%2==0 else False, listvar) 22 23 print(list(res))
以上是关于高阶函数map_reduce_sorted_filter的主要内容,如果未能解决你的问题,请参考以下文章