14.python-lambda函数

python-lambda函数

lambda 基本语法

lambda函数的基本语法形式是 lambda 参数:表达式。

lambda函数并不需要函数名,也就是我们所说的“匿名”的含义。这使得我们可以在代码的任何地方快速定义一个函数。

下面的代码展示了如何使用lambda函数。

add = lambda x, y: x + y
print(add(5, 3))  # 输出: 8

lambda函数一般功能简单:单行expression决定了lambda函数不可能完成复杂的逻辑,只能完成非常简单的功能。由于其实现的功能一目了然,甚至不需要专门的名字来说明。
下面是一些lambda函数示例:

  • lambda x, y: x+y; 函数输入是x和y,输出是它们的积x+y
  • lambda:None; 函数没有输入参数,输出是None
  • lambda *args: sum(args); 输入是任意个数的参数,输出是它们的和(隐性要求是输入参数必须能够进行加法运算)
  • lambda **kwargs: 1; 输入是任意键值对参数,输出是1

lambda与map高阶函数

高阶函数是指那些接受函数作为参数或返回函数作为输出的函数。

在Python中,常见的高阶函数有map()filter()reduce()等。

lambda函数经常和这些高阶函数一起使用,达到简洁明了的效果。

比如下面这个例子,我们使用map()函数和lambda函数,快速实现了一个将列表中所有元素翻倍的操作:

numbers = [1, 2, 3, 4, 5]
doubled = map(lambda x: x * 2, numbers)
print(list(doubled))  # 输出: [2, 4, 6, 8, 10]

lambda与filter高阶函数

filter()函数是Python的另一个常见高阶函数,它接受一个函数和一个可迭代对象作为参数,并返回一个新的可迭代对象,

新的可迭代对象中的元素都是原可迭代对象中使得函数返回值为True的元素。

下面我们来看一个使用filter()函数和lambda函数,实现数据的过滤。

numbers = [1, 2, 3, 4, 5, 6]
even_numbers = filter(lambda x: x % 2 == 0, numbers)
print(list(even_numbers))  # 输出: [2, 4, 6]

lambda与reduce高阶函数

from functools import reduce
def add_z(x,y):
	return x+y

r_z=reduce(add_z,range(1,10))
print(r_z)
print(f"r_z 的类型:{type(r_z)}, add end:{r_z}")

Lambda函数在排序中的应用

在Python的sort()sorted()函数中,我们可以用lambda函数作为key参数,根据自定义的规则进行排序。

对列表进行排序

fruits = ['banana', 'apple', 'cherry', 'lime', 'mango']
fruits_sorted = sorted(fruits, key=lambda x: len(x))
print(fruits_sorted)  # 输出: ['lime', 'apple', 'mango', 'cherry', 'banana']

对字典进行排序

fruits={'banana': 1, 'apple': 3, 'cherry': 4, 'lime': 5, 'mango':2}
sorted_map = sorted(fruits.items(), key=lambda x: x[1],reverse=True)
fruits={key:value for key,value in sorted_map}

print(fruits)

# 执行结果
{'lime': 5, 'cherry': 4, 'apple': 3, 'mango': 2, 'banana': 1}

最大最小值

d = {'banana':23,'apple':18,'cherry':20,'lime':25}
ans = max(d.items (),key=lambda x:x[1])
print('数值最大为 {}:{}'.format(ans[0],ans[1]))

# 执行结果
数值最大为 lime:25

将函数作为参数传递给高阶函数

def testfunc(num):
    return lambda x : x * num

result1 = testfunc(10)
result2 = testfunc(20)

print(result1(9))
pritn(result2(9))

posted @ 2023-06-27 17:05  贝壳里的星海  阅读(39)  评论(0编辑  收藏  举报