Python----高阶函数---abs()绝对值,round()四舍五入,map()返回列表,reduce()累计,filter()过滤

高阶函数:函数作为参数传入,这样的函数称为高阶函数,高阶函数是函数式编程的体现。函数式编程就是指这种高度抽象的编程范式。

高阶函数,它是可以把函数作为一个参数传入到函数内部

高阶函数的由来

在Python中,abs()函数可以完成对数字求绝对值计算。  (MANU ABS 手动绝对值)

① 正数的绝对值是它本身 ② 负数的绝对值是它的相反数

abs()返回的结果都是正数


abs(-10) # 10
print(abs(-10))

round()函数可以完成对数字的四舍五入计算。


a = round(1.2)  # 1
b = round(1.9)  # 2
print(a, b)

案例:任意两个数字,按照指定要求(① 绝对值 ② 四舍五入)整理数字后再进行求和计算。

思考:两个数。先算绝对值,把得到的两个绝对值数字,求和。。。再四舍五入,把得到的两个数字,求和。

一步步来,按照正常的,先求绝对值:


def fn1(num1, num2):
    return abs(num1) + abs(num2)

print(fn1(-10, 10))

接着,求 四舍五入


def fn2(num1, num2):
    return round(num1) + round(num2)

print(fn2(10.2, 6.9))

图示


要求:对以上进行简化,然后合并为同一个函数------设计思想(高阶函数)


def fn(num1, num2, f):
    # f代表要传入的参数(参数是一个函数名,如abs或round)
    return f(num1) + f(num2)

# 绝对值求和
print(fn(-10, 10, abs))
# 四舍五入
print(fn(10.2, 6.9, round))

图示:

map()函数 -----返回的是列表

map(func, lst),将传入的函数 变量func 作用到  lst  变量的每个元素中,并将结果组成新的列表(Python2)/迭代器(Python3)返回。

lst 序列,序列 :包括    字符串、列表、元组、集合以及字典。

lst = [1, 2, 3]

func函数:求某个数的平方,如输入2返回4,输入3返回9

map(func, lst)返回结果[1, 4, 9]

注意:只对序列中的,列表、元组、集合有用。


# 定义一个函数
def func(n):
    return n ** 2     
# 定义一个列表
list1 = [1, 2, 3]
# 使用map对lst进行func函数操作
list2 = list(map(func, list1))
print(list2)

# 定义一个函数
def func(n):
    return n ** 2
# 定义一个列表----序列都可以:包括 字符串、列表、元组、集合以及字典。
list1 = [1, 2, 3]
str1 = '1'     # 定义一个  字符串
tuple1 = (1, 2, 3)      # 定义一个  元组
set1 = {1, 2, 3}     # 定义一个  集合
dict1 = {'name':'xiaoming', 'age': 18}    # 定义一个  字典
# 使用map对lst进行func函数操作
print('下面是列表')
list2 = list(map(func, list1))
print(list2)

print('下面是元组')
tuple2 = list(map(func, tuple1))
print(tuple2)
print('下面是集合')
set2 = list(map(func, set1))
print(set2)

reduce()函数

reduce(func,lst),其中func必须有两个参数每次func计算的结果继续和序列的下一个元素做累加计算。-

注意:reduce()传入的参数func必须接收2个参数。


list1 = [1, 2, 3]

def func(a, b):   # func必须有两个参数
    return a + b

reduce(func,lst)把列表中的每个元素放入func中进行加工,然后进行累加操作


import functools   # 要导包


# 定义一个函数
def func(a, b):
    return a + b   # 也可以是 a - b   a * b    a / b
# 定义一个列表
list1 = [10, 20, 30, 40, 50]
sums = functools.reduce(func, list1)
print(sums)

filter()函数

filter(func, lst)函数用于过滤序列, 过滤掉不符合条件的元素, 返回一个 filter 对象。如果要转换为列表, 可以使用 list() 来转换。

相关链接:Python算术运算符:加减乘除 整除// 取余(取模)% 幂指数** 小括号-CSDN博客


# 定义一个函数(获取所有的偶数)
def func(n):
   return n % 2 == 0   # 取偶数,返回的是True和False
# 定义一个序列----下面的1   2   3 依次放到上面的n里面,符合的就返回。
list1 = [1, 2, 3, 4, 5, 6, 7, 8]
# 调用filter函数进行过滤操作
result = filter(func, list1)
print(list(result))

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

唯元素

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

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

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

打赏作者

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

抵扣说明:

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

余额充值