python中Lambda 匿名函数和四大高阶函数

一、Lambda 匿名函数概念:

1.Lambda函数也叫匿名函数,用于简化代码和处理某些特定的功能需求。

Python中的Lambda函数只能写一个表达式,这个表达式的执行结果就是函数的返回值,不用写return关键字

Lambda函数因为没有名字,所以也不会跟其他函数发生命名冲突的问题。

2.举例:

下面这三个例子非常经典

# 使用lambda对列表筛选出偶数
a_list = [1, 2, 3, 4, 5, 6]
b_list = list(filter(lambda x: x % 2 == 0, a_list))
print(b_list)  # 输出: [2, 4, 6]
# 使用lambda 字典排序(按照key排序),注意下面代码的x[0]

>>> my_dict = {'apple': 5,  'cherry': 8, 'banana': 3}
>>> sorted_dict = dict(sorted(my_dict.items(), key=lambda x: x[0]))
>>> print(sorted_dict)
{'apple': 5, 'banana': 3, 'cherry': 8}
# 使用lambda 字典排序(按照value排序),注意下面代码的x[1]

>>> my_dict = {'apple': 5,  'cherry': 8, 'banana': 3}
>>> sorted_dict = dict(sorted(my_dict.items(), key=lambda x: x[1]))
>>> print(sorted_dict)
{'banana': 3, 'apple': 5, 'cherry': 8}

 二、四大高阶函数

map函数

map()函数会根据提供的函数对指定序列做映射。其函数原型为map(function, iterable, ...)

使用示例

def square(number):
    return number ** 2
    
numbers = [1, 2, 3, 4, 5]
squared_numbers = map(square, numbers)
print(list(squared_numbers))  # [1, 4, 9, 16, 25]

在这个示例中,我们定义了一个计算平方的函数square,然后用map()将这个函数映射到列表numbers的每一个元素上,并通过转换成列表的方式输出结果。

filter函数

filter()函数用于过滤序列,过滤掉不符合条件的元素,返回由符合条件元素组成的新列表。该函数原型为filter(function, iterable)

使用示例

def is_even(number):
    return number % 2 == 0
    
numbers = [1, 2, 3, 4, 5, 6]
even_numbers = filter(is_even, numbers)
print(list(even_numbers))  # [2, 4, 6]

在这个示例中,我们定义了一个判断是否为偶数的函数is_even,然后用filter()过滤出列表numbers中的偶数。

reduce函数

reduce()函数在Python3.x中被移至functools模块中,它会对参数序列中元素进行累积它通常需要两个参数,一个是两个参数的函数,另一个是可迭代对象;可选的第三个参数是累加器的初始值。

使用示例

from functools import reduce

def add(x, y):
    return x + y
    
numbers = [1, 2, 3, 4, 5]
result = reduce(add, numbers)
print(result)  # 15

在这个示例中,我们定义了一个加法函数add,然后使用reduce()进行连续计算,累加列表numbers中的所有元素。

sorted函数

sorted()函数对所有可迭代的对象进行排序操作,返回一个新的排序后的列表,原型为sorted(iterable, key=None, reverse=False)

使用示例

# 根据字符串的长度对列表排序
words = ['banana', 'apple', 'cherry', 'date']
sorted_words = sorted(words, key=len)
print(sorted_words)  # ['date', 'apple', 'banana', 'cherry']

在这个示例中,列表words中的元素根据字符串的长度进行了排序。

结合匿名函数Lambda使用

所有上述高阶函数都可以与Python中的匿名函数Lambda结合使用,进一步提高代码的简洁程度。

使用示例

numbers = [1, 2, 3, 4, 5]

# 使用map与lambda
squared_numbers = map(lambda x: x ** 2, numbers)
print(list(squared_numbers))  # [1, 4, 9, 16, 25]

# 使用filter与lambda
even_numbers = filter(lambda x: x % 2 == 0, numbers)
print(list(even_numbers))  # [2, 4]

# 使用reduce与lambda
sum_of_numbers = reduce(lambda x, y: x + y, numbers)
print(sum_of_numbers)  # 15

# 使用sorted与lambda
words = ['banana', 'apple', 'cherry', 'date']
sorted_words_by_last_char = sorted(words, key=lambda x: x[-1])
print(sorted_words_by_last_char)  # ['banana', 'apple', 'date', 'cherry']

通过Lambda表达式的应用,我们无需明确定义函数,就能实现对高阶函数的快速定制化。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值