本文共 2023 字,大约阅读时间需要 6 分钟。
函数本身也可以赋值给变量,即:变量可以指向函数
abs #即abs()函数,是函数本身f = abs # 是函数本身f(-10) # 10 是函数调用
那么函数名是什么呢?函数名其实就是指向函数的变量!对于abs()
这个函数,完全可以把函数名abs
看成变量,它指向一个可以计算绝对值的函数!
高阶函数:
既然变量可以指向函数,函数的参数能接收变量,那么一个函数就可以接收另一个函数作为参数,这种函数就称之为高阶函数。
def add(x, y, f): # 定义一个高阶函数,因为出入变量包含了函数 return f(x) + f(y)add(-5, 6, abs)
map函数
map() 函数语法: 根据提供的函数对指定序列做映射
map(function, iterable, ...)
- function -- 函数
- iterable -- 一个或多个序列
Python 2.x 返回列表。
Python 3.x 返回迭代器。
reduce函数
reduce() 函数语法:函数将一个数据集合(链表,元组等)中的所有数据进行下列操作:用传给 reduce 中的函数 function(有两个参数)先对集合中的第 1、2 个元素进行操作,得到的结果再与第三个数据用 function 函数运算,最后得到一个结果。
reduce(function, iterable[, initializer])
- function -- 函数,有两个参数
- iterable -- 可迭代对象
- initializer -- 可选,初始参数
- 返回函数计算结果。
有初始化值的情况, 这个时候就不是取列表的前两项, 而是取初始值为第一个,序列的第一个元素为第二个元素,开始进行lambda函数的应用计算.
from functools import reduces=[1,2,3,4]print(reduce(lambda x,y: x+y, s,5))'''5是初始值,为第三个参数计算呢过程-->5+1=6-->6+2=8-->8+3=11-->11+4=15'''
filter函数
filter() 方法的语法:filter() 函数用于过滤序列,过滤掉不符合条件的元素,返回由符合条件元素组成的新列表。和
map()
类似,filter()
也接收一个函数和一个序列。和map()
不同的是,filter()
把传入的函数依次作用于每个元素,然后根据返回值是True
还是False
决定保留还是丢弃该元素。filter(function, iterable)
- function -- 判断函数。
- iterable -- 可迭代对象。
sorted函数
sorted 语法:
sorted(iterable, key=None, reverse=False)
- iterable -- 可迭代对象。
- key -- 主要是用来进行比较的元素,只有一个参数,具体的函数的参数就是取自于可迭代对象中,指定可迭代对象中的一个元素来进行排序。
- reverse -- 排序规则,reverse = True 降序 , reverse = False 升序(默认)。
sorted()
函数也是一个高阶函数,它可以接收一个key
函数来实现自定义的排序,例如按绝对值大小排序:sorted([36, 5, -12, 9, -21], key=abs)
list 的 list.sort() 方法会修改原始的 list(返回值为None)。通常这个方法不如sorted()方便-如果你不需要原始的 list,list.sort()方法效率会稍微高一些。另一个区别在于list.sort() 方法只为 list 定义。而 sorted() 函数可以接收任何的 iterable。
# -*- coding: utf-8 -*-L = [('Bob', 75), ('Adam', 92), ('Bart', 66), ('Lisa', 88)]def by_name(t): return t[0].lower()def by_score(t): return -t[1]# 按名字排序L1 = sorted(L, key=by_name) L1 = sorted(L, key=lambda t:t[0].lower()) # 按成绩从大到小排序L2 = sorted(L, key=by_score)L2 = sorted(L, key=lambda t:t[1], reverse=True)L2 = sorted(L, key=lambda t:-t[1])"""如果L是一个dict,那么dict.items()就会将dic转化成上述的元组列表,然后达到对dict排序的目的"""
转载地址:https://blog.csdn.net/zz2230633069/article/details/108102789 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!