Python中的常用高阶函数

高阶函数

- 高阶函数是指接受函数作为参数或者返回值是一个函数的参数,是Python函数式编程的重要手段之一

常用的高阶函数

map函数

- 语法:map(function,iterable...)
- map()函数接受一个函数和一个可迭代对象作为参数,将函数应用于可迭代对象的每个元素,并返回一个包含结果的迭代器
- map函数会对可迭代对象中的每个元素依次调用function函数,返回一个新的迭代器

示例:

# 将列表中的元素加1
number = [1, 2, 3, 4, 5]
result = map(lambda x : x + 1, number)
print(result, list(result))
# 输出结果:
# <map object at 0x000002550C8FA490>
# [2, 3, 4, 5, 6]

# 查看map中迭代器的值
for i in result:
	print(1)
# 输出结果:可被for循环的都是可迭代对象
"""
2
3
4
5
6
"""

filter函数

- 语法:filter(function, iterable)
- filter()函数接受一个函数和一个可迭代器对象作为参数,将函数应用于可迭代对象的每个元素,并返回一个包含满足条件的元素的迭代器

示例:

number = [1, 2, 3, 4, 5]
result = filter(lambda x: x % 2 == 0, number)
# 输出结果:[2, 4]

sorted函数

- 语法:sorted(iterable, key=None, reverse=None)
- sorted()函数接受一个可迭代对象作为参数,返回一个心动额排好序的列表,可选参数key用于指定排序关键字函数,reverse用于指定是否降序排序

示例:

number = [2, 4, 1, 3, 8, 9, 5]
result = sorted(number, key=lambda x: x, reverse=False)
print(result)
# 输出结果: [1, 2, 3, 4, 5, 8, 9]

reduce函数

- 语法:reduce(function,iterable[, initalizer])
- reduce()函数接受一个函数和一个可迭代对象作为参数,递归的将函数应用于可迭代对象的元素,返回一个单一的结果

示例:

from functools import reduce
number = [1, 2, 3, 4, 5]
result = reduce(lambda x, y: x * y, number)
print(result)
# 输出结果:120

zip函数

- 语法:zip(*iterable)
- zip()函数接受多个可迭代对象作为参数,返回一个包含元祖的迭代器,没个元祖包含来自各个可迭代对象的元素

示例

number = [1, 2, 3, 4]
sources = ["onw", "two", "three", "four"]
result = zip(number, sources)
print(list(result))
# 输出结果:[(1, 'onw'), (2, 'two'), (3, 'three'), (4, 'four')]

max函数

- 语法:max(iterable, *args, key=None, default=None)
- max()函数接受一个可迭代对象作为参数,返回可迭代对象中的最大元素,可选参数key用于指定比较的关键字,default用于指定可迭代对象为空时的默认返回值

示例:

# 获取列表中最大的值
number = [2, 4, 1, 3, 8, 9, 5]
result = max(number)
print(result)
# 输出结果:9

# 根据字符串长度获取最常的字符串
string = ['123',"1234","12345"]
result = max(string, key=lambda x: len(x))
print(result)
# 输出结果:12345

# 列表为空时,打印默认输出结果
number = []
result = max(number, key=lambda x: x, default="iterable is None!")
print(result)
# 输出结果:iterable is None!

min函数

- 语法:min(iterable, *args, key=None, default=None)
- min()函数接受一个可迭代对象作为参数,返回可迭代对象中的最小元素,可选参数key用于指定比较的关键字,default用于指定可迭代对象为空时的默认返回值

示例:

# 获取列表中最大的值
number = [2, 4, 1, 3, 8, 9, 5]
result = min(number)
print(result)
# 输出结果:1

# 根据字符串长度获取最常的字符串
string = ['123',"1234","12345"]
result = min(string, key=lambda x: len(x))
print(result)
# 输出结果:123

# 列表为空时,打印默认输出结果
number = []
result = min(number, key=lambda x: x, default="iterable is None!")
print(result)
# 输出结果:iterable is None!

sum函数 限制数据类型为number类型

- 语法:sum(iterable, start=0)
- sum()函数接受一个可迭代对象作为参数,返回可迭代对象中所有元素的总和,可选参数start用于指定总和的初始值
number = [1, 2, 3, 4]
result = sum(number)
print(result)
# 输出结果:10

# 指定初始值并计算总和
result = sum(number, start=10)
print(result)
# 输出结果:20

reversed函数

- 语法:reversed(seq)
- reversed()函数接受一个可迭代对象作为参数,返回一个逆序的迭代器
- 只作为倒序输出,不做倒序排序

示例:

number = [1, 2, 3, 4]
result = list(reversed(number))
print(result)
# 输出结果:[4, 3, 2, 1]

exec函数

- 语法:exec(object, globals=None, locals=None)
- exec()函数用于执行一个字符串或代码块,并返回None,它可以用于执行包含Python代码的字符串或文件内容,可选参数globalslocals用于指定全局和局部命名空间

示例:

code = """
x = 10
y = 10
result = x + y
print(result)
"""
exec(code)
# 输出结果:20

# 在定义命名空间中执行代码
x = 5
exec("x = x * 2", globals(), locals())
print(x)
# 输出结果:10
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

现实与梦·

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

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

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

打赏作者

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

抵扣说明:

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

余额充值