欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 汽车 > 维修 > Python 函数式编程

Python 函数式编程

2024/10/24 18:24:08 来源:https://blog.csdn.net/huangjianfeng21/article/details/142109294  浏览:    关键词:Python 函数式编程

Python lambda(匿名函数)

Python 使用 lambda 来创建匿名函数。

lambda 函数是一种小型、匿名的、内联函数,它可以具有任意数量的参数,但只能有一个表达式。

匿名函数不需要使用 def 关键字定义完整函数。

lambda 函数通常用于编写简单的、单行的函数,通常在需要函数作为参数传递的情况下使用,例如在 map()、filter()、reduce() 等函数中。

lambda 函数特点

  • lambda 函数是匿名的,它们没有函数名称,只能通过赋值给变量或作为参数传递给其他函数来使用。
  • lambda 函数通常只包含一行代码,这使得它们适用于编写简单的函数。

lambda 语法格式

  • lambda是 Python 的关键字,用于定义 lambda 函数。
  • arguments 是参数列表,可以包含零个或多个参数,但必须在冒号(:)前指定。
  • expression 是一个表达式,用于计算并返回函数的结果。
f = lambda: "Hello, world!"
print(f())  # 输出: Hello, world!

实例使用 lambda 创建匿名函数,设置一个函数参数 a,函数计算参数 a 加 10,并返回结果:

x = lambda a : a + 10
print(x(5)) // 15

lambda 函数也可以设置多个参数,参数使用逗号 , 隔开:

以下实例使用 lambda 创建匿名函数,函数参数 a 与 b 相乘,并返回结果:

x = lambda a, b : a * b
print(x(5, 6)) // 30

函数与 lambda 结合使用

def calc_function(o):if o == "+":return lambda a,b: a+belif o == "-":return lambda a,b: a-belif o == "*":return lambda a,b : a*bf = calc_function("+") # 返回的是lambda对象
print(f) # <function calc_function.<locals>.<lambda> at 0x10486f880>
r = f(2,3)
print(r) # 5

内置的 lambda 函数sort

l = [-1,2,3,-2]
l.sort()
print(l) # [-2, -1, 2, 3]
l.sort(reverse=True)
print(l) # [3, 2, -1, -2]
l = [(1,-3),(2,-5),(3,1)]
def func(p):return p[1]# 这个key实际上就是一种排序规则,如果传key那么规则就是我们自己进行定义的
l.sort(key=func)
print(l) # [(1, -3), (2, -5), (3, 1)]l.sort(key=func,reverse=True)
print(l) # [(3, 1), (2, -5), (1, -3)]

有列表结构如下:goods_info = [

("水杯", 12.5, 25),

("西装", 1280, 3689),

("电脑", 7800, 13800),

("摄像头", 248.8, 349)

]

第一列代表商品名称,第二列代表商品折扣价格,第三列代表商品原价

请按照商品折扣数进行从小到大排序

goods_info = [("水杯", 12.5, 25),("西装", 1280, 3689),("电脑", 7800, 13800),("摄像头", 248.8, 349)
]for i in goods_info:print(i[0],i[1]/i[2])goods_info.sort(key=lambda i:i[1]/i[2])
print(goods_info)

内置函数 Map

map() 函数会根据提供的函数对指定序列做映射。

第一个参数 function 以参数序列中的每一个元素调用 function 函数,返回包含每次 function 函数返回值的新列表。

比如我们有一个列表,列表中的元素都是数字,那么请实现,把列表中的所有元素都加1,然后把结果放入到一个新的列表中

my_list = [1,2,3,4,5]
result = []for i in my_list:result.append(i+1)
print(result) # [2, 3, 4, 5, 6]

使用内置函数 Map

my_list = [1,2,3,4,5]
def add_one(e):return e+1r = map(add_one, my_list)
print(r) # <map object at 0x1026dc070> 返回的是一个 map 对象
print(list(r)) # [2, 3, 4, 5, 6]
# 加入e传入的是1,那么返回e+3  , 如果e传入的是2 那么返回2-1
def add_two(e):if e == 1:return e+3elif e == 2:return e-1else:return e
r = map(add_two, my_list)
r = list(r)
print(r) # [4, 1, 3, 4, 5]

内置函数结合 lamdba 表达式

# 结合lamdba表达式, 对每个元素+1
r = map(lambda e:e+1, my_list)
print(list(r)) # [2, 3, 4, 5, 6]print(list(map(lambda e:e+1, my_list))) # [2, 3, 4, 5, 6]

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com