详解Python 中列表推导和 Lambda 的区别

  • Post category:Python

列表推导和 Lambda 都是 Python 中常用的函数,但它们具有不同的用途和应用场景。下面详细介绍它们的区别和使用方法。

列表推导

列表推导是一种用于快速创建列表的方法。它允许使用一行简洁的代码生成新列表,而无需进行逐个添加。

列表推导的基本语法如下:

[expression for item in iterable if condition]

其中 expression 是生成新列表时使用的表达式,item 是从 iterable 中迭代的元素,condition 是可选的筛选条件。

例如,我们可以使用列表推导生成包含 5 个元素的列表,每个元素是原来的 3 倍:

original_list = [1, 2, 3, 4, 5]
new_list = [item * 3 for item in original_list]
print(new_list)  # [3, 6, 9, 12, 15]

其中,item * 3 是生成新列表元素的表达式,for item in original_list 表示迭代原来的列表,将其中的每个元素乘以 3,生成新的元素。

列表推导甚至还可以用于生成多维列表。例如,我们可以使用下面的列表推导生成一个 3×3 的矩阵:

matrix = [[i+j for j in range(3)] for i in range(3)]
print(matrix)  # [[0, 1, 2], [1, 2, 3], [2, 3, 4]]

在这个例子中,我们使用了两个嵌套的循环,分别迭代 i 和 j,生成一个由 i+j 组成的 3×3 的矩阵。

列表推导是一种非常方便和易于阅读的代码编写方式,它可以帮助我们快速生成常规的数据结构,起到事半功倍的效果。

Lambda

Lambda 是 Python 中的匿名函数,它可以用于快速生成函数对象,这些函数对象可以被传递给其他函数或数据结构中,起到了代码复用和简化的作用。

Lambda 的基本语法如下:

lambda arguments: expression

其中 arguments 是传递给函数的参数列表,expression 是函数的主体部分。

例如,我们可以使用 Lambda 快速生成一个将传入的整数加 2 的函数:

add_two = lambda x: x + 2
print(add_two(3))  # 5

在这个例子中,我们定义了一个 Lambda 函数 add_two,它有一个参数 x,返回值是 x + 2。我们可以调用这个函数,传递参数 3,得到结果 5

Lambda 还可以与其他 Python 常用函数一起使用,例如 sorted()。我们可以使用 Lambda 作为 sorted() 函数的参数,定义一个按照元组的第二个元素排序的函数:

tuple_list = [(1, 2), (3, 1), (5, 3)]
sorted_list = sorted(tuple_list, key=lambda x: x[1])
print(sorted_list)  # [(3, 1), (1, 2), (5, 3)]

在这个例子中,我们定义了一个元组列表 tuple_list,它包含 3 个元素。我们使用 sorted() 函数对这个列表进行排序,其中排序规则由 Lambda 函数 lambda x: x[1] 定义,表示按照元组的第二个元素进行排序。最终排序结果保存在新列表 sorted_list 中。

总结

列表推导和 Lambda 都是 Python 中常用的函数,但它们具有不同的用途和应用场景。通常情况下,列表推导用于快速生成常规的数据结构,而 Lambda 则用于生成可复用的函数对象,在调用其他函数或数据结构时起到方便和简化的作用。在实际编写代码时,我们可以根据具体的应用场景,选择更合适的函数,提高代码的效率和可读性。