当前位置:首页>python>Python 之 lambda函数

Python 之 lambda函数

  • 2026-08-28 15:03:29
Python 之 lambda函数

Python 之 lambda函数

1、简介

Lambda函数是Python中的匿名函数,即没有名称的函数。它使用lambda关键字定义,主要用于编写简单的、单行的函数表达式。

核心特性:

  • 是一个表达式,而非语句块。
  • 可以有任意数量的参数,但只能有一个表达式。
  • 自动返回表达式的结果(不需要return语句)。
  • 通常用于需要函数对象作为参数的高阶函数中。

2、基础语法

2.1、语法格式

lambda 参数1,参数2... : 表达式

2.2、示例

2.2.1、无参函数

# 普通函数def output_content(): print(”打印一行数据的函数”)# 转化成lambda函数,output_content = lambda : print(”打印一行数据的函数”)output_content()

2.2.2、有一个参数的返回值函数

# 有一个参数的返回值函数def return_params_fun(a:int): return a ** 2print(return_params_fun(10))return_params_fun_lam = lambda a : a ** 2print(return_params_fun_lam(10))

2.2.3、有多个参数的返回值函数

# 有多个参数并且有返回值的函数def return_fun(a: int, b : int): return a + bprint(return_fun(10,30))# 转化成lambdareturn_fun_lam = lambda a, b : a + bprint(return_fun_lam(10, 30))

2.2.4、默认参数的

def fun(a: int , b:int=2): return a*bprint(fun(5))print(fun(5,3))print(”--------”)lam_fun = lambda a, b=2 : a * bprint(lam_fun(5))print(lam_fun(5,3))

2.2.5、可变参数(*args 和 **kwargs)

def fun(*args): return sum(args)print(fun(1,2,3,4,5,6,7))print(”----------------”)args_fun = lambda *args: sum(args)print(args_fun(1,2,3,4,5,6,7))def kwargs_fun(**kwargs): for k,v in kwargs.items(): print(f”{k} : {v}”)dict_item = {”name”:'admin', ”age” : 18, ”address” : '北京海淀'}kwargs_fun(**dict_item)kwargs_fun_lam = lambda **kwargs : ”\n”.join(f”{k}={v}” for k, v in kwargs.items())print(kwargs_fun_lam(name = 'zhangsan', age = 19))”””name : adminage : 18address : 北京海淀name=zhangsanage=19”””

3、与高阶函数配合使用

3.1、map() 映射

# 将列表的每个元素平方nums = [1,2,3,4,5]squared = list(map(lambda x : x ** 2, nums))print(squared) #[1,4,9,16,25]

3.2、filter() 过滤

# 筛选出偶数nums =[1,2,3,4,5]evens = list(filter(lambda x : x % 2 ==0, nums))print(evens)# [2, 4]

3.3、sorted() 自定义排序

# 根据单词长度进行排序words = [”apple”,”banana”,”java”, ”C++”, ”C”, ”Python”]print(sorted(words, key=lambda x: len(x), reverse=True))dict_num = [ {”name”:”admin”,”age”: 18}, {”name”:”John”,”age”:10}, {”name”:”Rose”,”age”:21}, {”name”:”zhangsan”,”age”:56}, {”name”:”wangwu”,”age”:37}]# 按照age年龄进行正序排序sorted_fun1=sorted(dict_num, key=lambda x: x[”age”])print(sorted_fun1)print(”---------”)# 按照age 年龄 进行倒序排序sorted_fun2=sorted(dict_num, key=lambda x: x[”age”], reverse=True)print(sorted_fun2)# 按照name的长度进行正序排序sorted_fun3=sorted(dict_num, key=lambda x: len(x[”name”]))print(sorted_fun3)

3.4、reduce() 归约(需要导入functools)

# def fun_reduce(): return reduce(lambda x, y: x*y, range(1,6))print(fun_reduce())lamdba_reduce = reduce(lambda x, y: x*y, range(1,6))print(lamdba_reduce)

3.5、max() / min() 自定义比较键

names = ['John','Smith','admin', ”Python”, ”C”, ”C++”, ”JavaScript”]max_name = max(names, key=lambda x : len(x))print(max_name)min_name = min(names, key=lambda x : len(x))print(min_name)

4、性能与限制

4.1、性能特点

import timeit# 普通函数 vs Lambda(性能几乎无差异)def add_fun(x, y): return x + yadd_lambda = lambda x,y : x + y# 测试执行时间(几乎相同)print(timeit.timeit(”add_func(3, 5)”, globals=globals()))print(timeit.timeit(”add_lambda(3, 5)”, globals=globals()))

4.2、限制

# ❌不能包含语句(如:赋值,循环)# lambda x : x = x + 1# SyntaxError# ❌不能包含多行表达式(除非使用 括号 或 反斜杠)# lambda x :# x + 1# 无效# ✅ 可以使用括号包含多行表达式mulit_fun = lambda x : ( x + 1 if x > 2 else x -1)print(mulit_fun(0))# -1print(mulit_fun(2))# 1

5、Lambda 与 普通函数的区别

6、总结

  • Lambda的核心价值在于简洁性,它让Python的函数式编程更加优雅。
  • 记住以下原则:
  • 最佳实践口诀:
    • 一行逻辑用lambda,多行复杂写 def ; 回调排序最合适,可读第一别逞能。

    最新文章

    随机文章