欢迎访问宙启技术站
智能推送

Python中的lambda表达式:简单又强大的函数实现方式

发布时间:2023-06-05 14:55:06

Python中的lambda表达式是一种简单又强大的函数实现方式,它可以在一行代码中创建一个匿名函数,使得代码更加简洁和易于理解。本文将介绍lambda表达式的基本语法和应用场景,并给出一些实例演示。

lambda表达式的基本语法

lambda表达式的基本语法如下:

lambda arguments: expression

其中,arguments表示函数参数,可以是任意个,也可以为空;expression表示函数执行体,一般是一个表达式,也可以是一个语句块。这个lambda表达式就等同于一个函数,执行结果就是函数的返回值。

需要注意的是,lambda表达式只能包含一个表达式,而不能包含多条语句,否则会导致语法错误。

lambda表达式的应用场景

lambda表达式通常用于需要频繁调用的简单函数,比如排序、过滤、映射等操作。由于lambda表达式可以直接定义在代码中,因此可以避免创建不必要的函数对象,提高代码的执行效率。

下面给出一些lambda表达式的常见应用场景:

1. List排序

lambda表达式可以通过sorted函数对List进行排序,例如:

lst = [5, 1, 3, 9, 7]

sorted_lst = sorted(lst, key=lambda x: x)

print(sorted_lst)

运行结果为:

[1, 3, 5, 7, 9]

这里的key参数表示排序的依据,lambda表达式表示按照元素大小进行排序。

2. List筛选

lambda表达式可以通过filter函数对List进行筛选,例如:

lst = [5, 1, 3, 9, 7]

filtered_lst = filter(lambda x: x > 5, lst)

print(list(filtered_lst))

运行结果为:

[9, 7]

这里的lambda表达式表示筛选出元素大于5的项。

3. List映射

lambda表达式可以通过map函数对List进行映射,例如:

lst = [5, 1, 3, 9, 7]

mapped_lst = map(lambda x: x * 2, lst)

print(list(mapped_lst))

运行结果为:

[10, 2, 6, 18, 14]

这里的lambda表达式表示将每个元素乘以2。

4. 函数参数

lambda表达式可以作为函数的参数,例如:

def add(a, b, func):

    return func(a) + func(b)

result = add(3, -4, lambda x: abs(x))

print(result)

运行结果为:

7

这里的lambda表达式作为函数参数,表示将函数的参数取绝对值,然后再进行加法操作。

5. 条件表达式

lambda表达式可以作为条件表达式,例如:

result = "even" if lambda x: x % 2 == 0 else "odd"

print(result)

运行结果为:

<function <lambda> at 0x7f2a06e93700>

这里的lambda表达式返回True或False,用来判断一个数是偶数还是奇数,然后通过条件表达式输出相应的结果。

实例演示

下面给出一些lambda表达式的实例演示:

1. 将字符串列表按照首字母排序

lst = ['apple', 'banana', 'grape', 'orange']

sorted_lst = sorted(lst, key=lambda x: x[0])

print(sorted_lst)

运行结果为:

['apple', 'banana', 'grape', 'orange']

2. 筛选列表中的偶数

lst = [3, 7, 2, 8, 5, 9, 4]

filtered_lst = filter(lambda x: x % 2 == 0, lst)

print(list(filtered_lst))

运行结果为:

[2, 8, 4]

3. 将列表中的元素都取绝对值

lst = [-3, 7, -2, 8, -5, 9, 4]

mapped_lst = map(lambda x: abs(x), lst)

print(list(mapped_lst))

运行结果为:

[3, 7, 2, 8, 5, 9, 4]

4. 求平均数

lst = [3, 7, 2, 8, 5, 9, 4]

average = lambda lst: sum(lst) / len(lst)

print(average(lst))

运行结果为:

5.0

5. 判断字符串是否为数字

string = "123"

is_number = lambda string: string.isdigit()

print(is_number(string))

运行结果为:

True