📜  Python - 列表理解(1)

📅  最后修改于: 2023-12-03 15:04:02.838000             🧑  作者: Mango

Python - 列表理解

列表理解是 Python 中一种强大的构造列表的方法。使用列表理解,可以用一行代码创建新列表,而不需要使用循环语句和 append() 方法。在本文中,我们将介绍如何使用列表理解以及其使用案例。

基本语法

列表理解由以下三个主要组件组成:

  • 一个输入序列
  • 一个迭代变量,在循环中遍历序列数据
  • 一个输出表达式

基本语法如下所示:

[expression for variable in iterable]
  • expression:对输入序列中的每个值执行的操作或表达式。
  • variable:在循环中遍历输入序列的变量。
  • iterable:包含要迭代的值的序列,可以是列表、元组、字符串等。

示例代码:

# 创建一个新列表,其中每个元素均为原始列表的平方值
origin_list = [1, 2, 3, 4, 5]
new_list = [x**2 for x in origin_list]
print(new_list)

# output: [1, 4, 9, 16, 25]
条件表达式

您可以使用条件语句向列表理解中添加条件。例如,如果要创建一个新列表,其中只包含偶数,则可以添加 if 语句。

示例代码:

# 创建一个新列表,其中只包含原始列表中的偶数
origin_list = [1, 2, 3, 4, 5]
new_list = [x for x in origin_list if x % 2 == 0]
print(new_list)

# output: [2, 4]

ipadout:

  1. expression就是输入序列的每一个值进行的操作或表达式,例如$x**2$
  2. variable就是在循环中用来遍历输入序列的变量,例如x
  3. iterable 就是要迭代的序列,可以是任意支持迭代的类型

另外,您也可以使用 else 子句添加另一个表达式。

示例代码:

# 创建一个新列表,如果原始列表中的元素为偶数,则将其平方;否则,减去1并将其平方。
origin_list = [1, 2, 3, 4, 5]
new_list = [x**2 if x % 2 == 0 else (x-1)**2 for x in origin_list]
print(new_list)

# output: [1, 4, 4, 16, 16]
嵌套列表理解

您可以在列表理解中嵌套一个或多个列表理解以创建更复杂的表达式。

示例代码:

# 创建一个新列表,其中包含原始列表和其平方值的所有组合
origin_list = [1, 2, 3]
new_list = [(x, x**2) for x in origin_list]
print(new_list)

# output: [(1, 1), (2, 4), (3, 9)]

示例代码:

# 创建一个新列表,其中包含原始列表两两元素的合并
origin_list_1 = ['a', 'b', 'c']
origin_list_2 = [1, 2, 3]
new_list = [(x, y) for x in origin_list_1 for y in origin_list_2]
print(new_list)

# output: [('a', 1), ('a', 2), ('a', 3), ('b', 1), ('b', 2), ('b', 3), ('c', 1), ('c', 2), ('c', 3)]
总结

列表理解是 Python 中一个非常强大的特性,可以让您使用简单的一行代码创建新列表。它的语法简单易懂,灵活多变,能够处理多个输入和嵌套列表。列表理解在数据科学、机器学习等领域得到广泛使用,是每个 Python 开发人员必须掌握的基础知识。

  • if 子句用于 if 操作,else 子句用于 else 操作。
  • 可以嵌套列表理解来创建更复杂的表达式。
  • 列表理解可以用于任何迭代对象,并且对于大型数据集效率更高。