【python基础】高阶函数

一、定义

  参数是一个函数的函数 ——> 高阶函数

二、高阶函数

  1、abs(n) : 求n的绝对值,并返回给调用处

1 res1 = abs(-609)  # 609

  2、list.sort(key, reverse=False) : 将列表中的每个元素按照指定的规则排序;无返回值,将排序的结果直接作用于原列表
    形参key的值是个函数, 这个函数用来指定列表排序的规则
    这个函数必须要有一个参数, 这个参数就代表列表中的每个元素
    这个函数必须要有一个返回值,这个返回值就是用来比较每个元素排序顺序的

 1 list1 = [99, 16, 34, -988, 0.123]
 2 list1.sort()
 3 print(list1)  # [-988, 0.123, 16, 34, 99]
 4
 5 # 按照绝对值, 由小到大排序
 6 list1.sort(key=abs)
 7 print(list1)  # [0.123, 16, 34, 99, -988]
 8
 9 # 按照平方的值, 由大到小排序
10 def square(n):  # 参数  功能: 求一个数的平方,并把结果返回
11     return  n ** 2
12
13 list1.sort(key=square, reverse=True)
14 print(list1)  # [-988, 99, 34, 16, 0.123]

  3、sorted(iterable, key, reverse) : python内置的排序函数,将iterable中的每个元素按照指定的规则进行排序
    将排序的结果形成一个新列表返回给调用处
    key和reverse的用法与list.sort()函数一样

1 res2 = sorted(list1, key=abs, reverse=True)
2 print(res2)  # [-988, 99, 34, 16, 0.123]
3 print(type(res2))  # <class ‘list‘>

  4、max(, key) : 指定某种规则,获取最大的值对应的元素
    max(n1, n2, n3, key) : 对n1, n2, n3按照key进行比较大小, 获取最大的
       max(容器, key) : 对容器中的元素按照key进行比较大小, 获取最大的
    key这个形参对应的函数:必须要有参数(比较的元素)
                 必须要有返回值(比较的规则)

 1 res3 = max(1, 200, -90)
 2 print(res3)  # 200
 3
 4 # 1. 求绝对值最大的那个数
 5 res4 = max(1, 200, -999, key=abs)
 6 print(res4)  # -999
 7
 8 # 2. 求列表中绝对值最大的那个数
 9 list2 = [1, 200, -999]
10 res5 = max(list2, key=abs)
11 print(res5)  # -999
 1 list3 = [
 2     {"name": "Rose", "age": 18},
 3     {"name": "Jack", "age": 17},
 4     {"name": "Tom", "age": 16},
 5 ]
 6
 7 # 使用max 获取年龄最大的学生的信息
 8 # 对谁进行比较, 谁就是指定规则函数中的参数
 9 def get_max_age(d):  # 指定规则: 比较年龄
10     return d.get(‘age‘)
11
12 res6 = max(list3, key=get_max_age)  # 形参:key --> 函数(参数->dict)
13 print(res6)  # {‘name‘: ‘Rose‘, ‘age‘: 18}
14
15 # 使用max 获取姓名最大的学生的信息
16 def get_max_name(d):
17     return d.get(‘name‘)
18
19 res7 = max(list3, key=get_max_name)
20 print(res7)  # {‘name‘: ‘Tom‘, ‘age‘: 16}

  5、map(function, iterable) : 将可迭代对象中的每个元素应用于key函数, 将key函数执行的结果生成一个新的可迭代对象并返回给调用处

 1 list4 = [-2, 8, 2.1, -0.4]
 2
 3
 4 def get_square(n):  # 参数: 列表(可迭代对象)中的每一个元素
 5     return n ** 2
 6
 7
 8 res8 = map(get_square, list4)  # <map object at 0x0000000001E7CA48>
 9 print(list(res8))  # [4, 64, 4.41, 0.16000000000000003]
10
11 # 1. 求列表中每个元素对2取余的余数组成系列表
12 def get_nums(n):
13     return n % 2
14
15 res9 = list(map(get_nums, [2, 3, 4, 5]))
16 print(res9)
17
18 # 2. 求列表中每个字符串的首字母大写组成的新列表
19 # str.capitalize 有参数有返回值
20 def get_first_alpha_upper(s):  # 参数s 列表中的每个字符串
21     return s.title()  # s.isupper()  True / False  s.upper()
22
23 # res10 = list(map(str.capitalize, ["python", "i", "love", "you"]))
24 res10 = list(map(get_first_alpha_upper, [‘python‘, ‘good‘, ‘study‘]))
25 print(res10)
26
27 # 3. 求两个列表中相同索引值的元素的和组成的新列表
28 list5 = [1, 2, 3, 4, 5]
29 list6 = [10, 10, 10, 10, 10]
30
31 def get_sum(a, b):  # a, b分别是每个列表中相同索引值的元素
32     return a + b
33
34 res11 = list(map(get_sum, list5, list6))  # [11, 12, 13, 14, 15]
35 print(res11)

  6、filter(function, iterable) : 指定一个规则, 过滤掉可迭代对象中(序列)不符合规则的元素,并将符合规则的元素组成一个新的可迭代对象返回给调用处

    function的返回值必须是bool类型, 过滤掉的返回值为False, 保留的返回值为True

 1 list7 = [‘python‘, "ABC", "PYTHON", "123aBcDE"]
 2
 3 # 1. 过滤掉list7中字母全是大写的元素
 4 def filter_up_alpha(s):  # 功能: 过滤 参数:列表中的每个元素
 5     return not s.isupper()  # 返回值 必须是bool类型, False:该元素被过滤掉, True: 不被过滤掉
 6
 7 res12 = list(filter(filter_up_alpha, list7))  # <filter object at 0x00000000021AEA08>
 8 print(res12)  # [‘python‘, ‘123aBcDE‘]
 9
10 # 2. 过滤掉list7中字母不全是小写字母组成的元素
11 res13 = list(filter(str.islower, list7))  # str.lower 是否全是由小写字母组成的, 是返回True, 不是返回False
12 print(res13)  # [‘python‘]
13
14
15 # 4. 过滤掉列表中的所有偶数 (不要偶数)
16 def get_odd(n):  # 参数: 列表中的每个元素
17     if n % 2 == 0:
18         return False
19     else:
20         return True
21
22
23 res14 = list(filter(get_odd, [12, 13, 14, 15, 16]))
24 print(res14)

  7、zip(iter1, iter2, ...) 压缩打包 把多个可迭代对象中相同索引值的元素,组成一个元组,然后将所有的元组组成一个新的可迭代对象,返回给调用处

 1 list8 = [1, 2, 3, 4]
 2 list9 = ["a", "b", "c", "d"]
 3
 4 """
 5    <zip object at 0x00000000026AF588> [(1, "a"), (2, "b"), (3, "c"), (4, "d")]
 6 """
 7
 8 res15 = list(zip(list8, list9))  # [(1, ‘a‘), (2, ‘b‘), (3, ‘c‘), (4, ‘d‘)]
 9 print(res15)
10
11 # 应用场景:
12 for x in zip(list8, list9):
13     print(x)

原文地址:https://www.cnblogs.com/Tree0108/p/12110150.html

时间: 2024-09-28 16:57:32

【python基础】高阶函数的相关文章

python之高阶函数

在python中的高阶函数就是把一个函数作为一个行参去调用另外一个函数,如: def a (): pass return .... def b (): pass return .... a(b())

(三)3-4 Python的高阶函数和匿名函数

高阶函数:把函数当成参数传递的一种函数,例如 def add(x,y,f): return f(x) + f(y) print(add(-8,11,abs)) 运行结果: 19 注:1. 调用add函数,分别执行abs(-8)和abc(11),并分别计算他们的值2.最后做运算 map()函数 map()函数是python内置的一个高级函数,它接受一个函数f和一个list,并把list的元素以此传递给函数f,然后返回一个函数f处理完所有list元素的列表.例如 def f2(x): return

python的高阶函数

函数式编程的一个特点就是,允许把函数本身作为参数传入另一个函数,还允许返回一个函数. 高阶函数 定义:一个函数就可以接收另一函数作为参数,这种函数就称之为高阶函数. map/reduce Python内建了map()和reduce()函数. 1.map()函数 map()函数接受两个参数,一个是函数,一个是Iterable(可迭代对象),map将传入的函数依次作用到序列的每一个元素上,然后将结果作为新的Iterator返回. def f(x): return x*x r = map(f,[1,2

Python之高阶函数map/reduce

Python内建map()和reduce()函数 map()函数接收两个参数一个是函数一个是一个Iterable(迭代器),并把结果作为新的Iterator(生成器)返回 有一个函数f(x)=x*x作用于序列list[1,2,3,4,5,6,7,8,9] 使用python函数实现 >>> r=map(f,range(1,4)) >>> r <map object at 0x7fcec039ee80> >>> list(r) [1, 4, 9

python的高阶函数和函数即变量

1:高阶函数 #高阶函数 定义:把函数作为参数作为另一个函数的参数 def test(a,b): return a*b def test_1(f,c): return f*c print(test_1(test(1,2),5)) 运行结果: 10 2:函数即变量 def foo(): print("in the foo") bar() def bar(): print("in the bar") foo() 运行结果: in the foo in the bar d

Python 学习——高阶函数 filter 和 sorted

filter filter函数顾名思义,筛选,通过调用函数进行筛选序列中的满足函数的子项 以实例来说话: 过滤一个序列中所有的偶数,保留奇数 另如下,过滤掉一个序列中的所有空格以及空字符等信息 可以知道,filter函数传入了两个参数,第一个为函数,第二个为序列 sorted 排序也是在程序中经常用到的算法.无论使用冒泡排序还是快速排序,排序的核心是比较两个元素的大小.如果是数字,我们可以直接比较,但如果是字符串或者两个dict呢?直接比较数学上的大小是没有意义的,因此,比较的过程必须通过函数抽

JavaScript基础——高阶函数(map and reduce)

1 //高阶函数:一个函数可以接受另一个函数作为参数,这种函数称之为高阶函数. 2 /*1*/ 3 function f(x,y,f){ 4 return f(x)+f(y); 5 } 6 var sumAbs=f(-6,4,Math.abs); 7 console.log(sumAbs);//10 8 9 10 11 //map和reduce 12 /*map*/ 13 /*2*/ 14 function pow(x){ 15 return x*x; 16 } 17 var arr=[1,2,

函数式编程基础---高阶函数和偏函数

一.高阶函数 所谓高阶函数是指可一把函数作为参数,或者是可以将函数作为返回值的函数(我们见得闭包函数就是高阶函数). function foo(x){ return function(){ return x; } } 对于程序的编写,高阶函数比普通函数要灵活的多,除了通常意义的函数调用返回外,还形成了一种后续传递风格的结果接收方式,而非单一的返回值形式,后续传递风格的程序编写将函数的业务重点从返回值转移到了回调函数中: function(x,bar){ return bar(x); } 以上的代

初识python:高阶函数

定义: 变量可以指向函数,函数的参数能接收变量,那么,一个函数可以接收另一个函数作为参数,这种函数就称之为高阶函数. 简单说就是:把函数当差参数传递的函数就是高阶函数 原则: 1.不能修改被装饰函数的源代码: 2.不能修改被装饰函数的调用方式. 实例1: # abs 内置取绝对值函数 def add(a,b,f): return f(a) + f(b) #a的绝对值+b的绝对值 print(add(1,-2,abs)) # 取3,-6的绝对值之和 返回值:3 在不修改被装饰函数源代码的情况下为其

Python sorted() 高阶函数

描述 sorted() 函数对所有可迭代的对象进行排序操作. sort 与 sorted 区别: sort 是应用在 list 上的方法,sorted 可以对所有可迭代的对象进行排序操作. list 的 sort 方法返回的是对已经存在的列表进行操作,无返回值,而内建函数 sorted 方法返回的是一个新的 list,而不是在原来的基础上进行的操作. 语法 sorted 语法: sorted(iterable[, cmp[, key[, reverse]]]) 参数说明: iterable --