python lambda函数用法
在Python中,lambda
函数是一种用于创建匿名函数的简便方式。它允许你快速定义一个简单的函数,而不需要使用传统的def
语句。lambda
函数通常用于一次性的操作或作为参数传递给其他函数。
lambda
函数的语法:
lambda 参数1, 参数2, ... : 表达式
lambda
是关键字。- 参数是函数输入的参数(可以有多个)。
- 表达式是返回的值,这个表达式的值将作为函数的返回值。
示例:
1. 基本示例:
f = lambda x: x + 2
print(f(3)) # 输出 5
这里,lambda x: x + 2
定义了一个匿名函数,它接受一个参数x
,并返回x + 2
的值。
2. 多个参数的示例:
add = lambda x, y: x + y
print(add(3, 5)) # 输出 8
3. 用在sorted()
函数中:
lambda
函数常用作排序的关键字参数。假设你有一个元组列表,并希望按元组的第二个元素排序:
tuples = [(1, 2), (3, 1), (5, 4)]
sorted_tuples = sorted(tuples, key=lambda x: x[1])
print(sorted_tuples) # 输出 [(3, 1), (1, 2), (5, 4)]
4. 在map()
函数中的使用:
map()
函数可以将一个函数应用于可迭代对象的每个元素,通常配合lambda
使用。
map()函数接受一个函数和一个可迭代对象作为参数,对可迭代对象中的每个元素应用这个函数,返回一个新的迭代器。
numbers = [1, 2, 3, 4, 5]
squares = map(lambda x: x ** 2, numbers)
print(list(squares)) # 输出 [1, 4, 9, 16, 25]
5. 在filter()
函数中的使用:
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]
6. 将lambda函数作为字典的value,用来处理多个分支,避免书写过多if else语句
# 按照用户等级给用户加分
# if else写法
def user_logging(user):
if user.level == 1:
user.credits += 2
elif user.level == 2:
user.credits += 5
elif user.level == 3:
user.credits += 10
elif user.level == 4:
user.credits += 20
# 使用lambda函数写法
def user_logging(user):
level_credit_map = {
1: lambda x: x+2,
2: lambda x: x+5,
3: lambda x: x+10,
4: lambda x: x+20,
}
user.credits = level_credit_map[user.level](user.credits)
注意事项:
lambda
函数只能包含一个表达式,不能有多个语句。- 它通常用于简单的函数操作,复杂的逻辑还是应该使用常规的
def
函数。
通过lambda
函数,你可以在不定义正式函数的情况下执行简单的操作,非常适合需要短小函数的场景。