python函数—高阶函数

目录

高阶函数:

1.filter() 函数的介绍

1.1 功能

1.2 语法

1.3 filter() 函数的应用

2.map() 函数的介绍

2.1 功能

2.2 语法

2.3 map() 函数的应用

3.reduce() 函数的介绍

3.1 功能

3.2 语法

3.3 reduce() 函数的应用

4.sorted() 函数的介绍

4.1 功能

4.2 语法

4.3 sorted() 函数的应用

5.max()/min() 函数的介绍

5.1 功能

5.2 语法

5.3 max()/min()函数的应用


高阶函数:

在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)

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

前端挣扎的鱼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值