目录
高阶函数:
在Python中,高阶函数是指能够接受函数作为参数或返回函数作为结果的函数。常见的Python高阶函数有:
(1)filter(function, iterable):用于过滤序列,返回一个迭代器,其中的元素是通过function返回值为True的元素。
(2)map(function, iterable, …):对序列中的每个元素进行操作,返回修改后的元素,组成一个新的迭代器。
(3)reduce (func, seq[, init()]):用于对一个序列进行累积操作,返回一个单一的值。需要导入 functools 模块才能使用。
(4)sorted(iterable, key=None, reverse=False) :用于对可迭代对象进行排序,根据key来指定排序规则。
(5)max(iterable, *[, key, default])和min(iterable, *[, key, default]):分别用于求可迭代对象中的最大值和最小值。
1.filter() 函数的介绍
1.1 功能
filter() 函数用于 过滤 可迭代对象中不符合条件的元素,返回由符合条件的元素组成的新的迭代器。filter() 函数把传入的函数依次作用于每个元素,然后根据返回值是 True 还是 False,来决定保留或丢弃该元素。
1.2 语法
参数说明:
(1) function:用于实现判断的函数,可以为 None。
(2) iterable:可迭代对象,如列表、range 对象等。
(3) 返回值:返回一个迭代器对象。
1.3 filter() 函数的应用
filter() 函数的基本应用
# filter()过滤函数
# 保留列表中的偶数
def func1(x):
return x % 2 == 0
list1 = [1, 2, 3, 4, 5, 6]
f1 = list(filter(func1, list1))
print(f1) # [2, 4, 6]
f2 = list(filter(lambda x: x % 2 == 0, list1)) # 转换成列表输出
print(f2) # [2, 4, 6]
for i in f2:
print(i, end=" ") # 遍历输出 2 4 6
list2 = [1, 5, None, 9, None]
f3 = list(filter(None, list2))
print(f3) # [1, 5, 9]
2.map() 函数的介绍
2.1 功能
map函数也是python中的一个内置函数,用法同之前讲过的filter函数类似。map在这里的意思是映射的意思,会根据提供的函数对指定序列做映射。map函数会返回一个迭代器,如果要转换为列表,可以使用 list() 来转换。
2.2 语法
参数说明:
map(function, iterable)
(1) function:第一个参数接受一个函数名。
(2) iterable:接受一个或多个可迭代的序列。
(3) 返回值:返回的是一个集合。
2.3 map() 函数的应用
map() 函数的基本应用
# map() 函数
def func2(x):
return x * x
# 求列表中每个元素的乘方
list1 = [1, 2, 3, 4]
m1 = list(map(func2, list1))
print(m1) # [1, 4, 9, 16]
m2 = list(map(lambda x: x * x, list1))
print(m2) # [1, 4, 9, 16]
# 求两个列表中对应位置每个元素的平方和
list1 = [1, 2, 3, 4]
list2 = [5, 6, 7, 8]
m3 = list(map(lambda x, y: x ** 2 + y ** 2, list1, list2))
print(list(m3)) # [26, 40, 58, 80]
3.reduce() 函数的介绍
3.1 功能
reduce()函数用于对一个序列进行累积操作,返回一个单一的值。
3.2 语法
reduce(function, sequence,initializer)
(1) function:有两个参数
(2) sequence: 元组、列表等可迭代对象
(3) initializer:可选,初始参数
3.3 reduce() 函数的应用
reduce() 函数的基本应用
# reduce()函数:对序列的值进行累积
from functools import reduce # 导包
list1 = [1, 2, 3, 4, 5]
r1 = reduce(lambda x, y: x + y, list1)
print(r1) # 15
print(type(r1)) # 输出 <class 'int'> 整形
list2 = [1, 2, 3, 4, 5]
r2 = reduce(lambda x, y: x * y, list2)
print(r2) # 输出 120
from functools import reduce
a = [1, 2, 3, 4, 5]
def add(x, y): return x + y
print(reduce(add, a))
4.sorted() 函数的介绍
4.1 功能
sorted() 函数其功能是对序列(列表、元组、字典、集合、还包括字符串)进行排序,会返回一个排好序的列表。
4.2 语法
sorted(iterable, key=None, reverse=False)
(1) iterable:表示指定的序列
(2) key: 自定义排序规则
(3) reverse:指定以升序(False,默认)还是降序(True)进行排序
4.3 sorted() 函数的应用
sorted() 函数的基本应用
#对列表进行排序
a = [5,3,4,2,1]
print(sorted(a))
#对元组进行排序
a = (5,4,3,1,2)
print(sorted(a))
# 对元组组成的列表中某一项进行排序
stu = [('狗狗', 'A', 10), ('喵喵', 'B', 6), ('鱼鱼', 'B', 7), ]
new_stu = sorted(stu, key=lambda student: student[2])
print(new_stu)
#字典默认按照key进行排序
a = {4:1,\
5:2,\
3:3,\
2:6,\
1:8}
print(sorted(a.items()))
#对集合进行排序
a = {1,5,2,6,4}
print(sorted(a))
#对字符串进行排序
a = "5201315"
print(sorted(a))
5.max()/min() 函数的介绍
5.1 功能
(1)python内置的max函数和min函数,用于获得一个可迭代对象的最大元素或最小元素。或者返回多个对象中最大的那个或最小的那个。 max函数 入参可以是一个可迭代对象,也可以是多个对象。
(2)max(iterable, *[, key, default]):返回可迭代对象中最大的元素。或者返回两个及以上实参中最大的。如果只提供了一个位置参数,它必须是非空 iterable,返回可迭代对象中最大的元素;如果提供了两个及以上的位置参数,则返回最大的位置参数。其中有两个可选只能用关键字的实参;key实参指定排序函数用的参数,如传给 list.sort() 的。default 实参是当可迭代对象为空时返回的值。如果可迭代对象为空,并且没有给 default ,则会触发 ValueError。如果有多个最大元素,则此函数将返回第一个找到的。这和其他稳定排序工具如 sorted(iterable, key=keyfunc, reverse=True)[0] 和 heapq.nlargest(1, iterable, key=keyfunc) 保持一致。min(iterable, *[, key, default]):反之。
5.2 语法
max(iterable, *[, key, default])/min(iterable, *[, key, default])
(1) iterable: 参数是一个可迭代对象,例如列表、元组或字符串,它指定要在其中查找最大值的对象。
(2) key: 用于映射处理每个元素的函数,接受一个参数,返回一个值,用于比较元素。
(3) default:默认返回值,如果包含 iterable 的对象为空,则返回default 值
5.3 max()/min()函数的应用
max()/min() 函数的基本应用
# 按字符串长度比较元素大小
list1 = ['java', 'python', 'sql', 'c']
print("最长的字符串为:", max(list1, key=len))
# 求出一个字典中的最小值,可以使用 min 函数的 key 参数指定要比较的键:
dict = {'a': 1, 'b': 2, 'c': 3, 'd': 4, 'e': 5}
min1 = min(dict, key=lambda x: dict[x])
print(min1)