Python 列表推导式

2025年7月13日 | 6分钟阅读

在 Python 中,列表推导式提供了一种简洁高效的方式来创建新列表。新列表可以带有条件和过滤器,这些将应用于现有列表。

Python List Comprehension

让我们看一个简单的例子,展示列表推导式是如何工作的。

示例

立即执行

输出

[16, 1024, 36, 5776, 144, 1369, 2704]

说明

在上面的例子中,我们创建了一个名为 sqrt_num 的数字列表。然后,使用列表推导式,我们创建了一个名为 square 的新列表,该列表给出了 sqrt_num 中每个数字的平方。

Python 列表推导式的语法

Python 列表推导式的语法如下:

语法

参数

  • expression: expression 决定添加到新列表的内容
  • item: 从可迭代对象中获取的项
  • iterable: 顺序数据类型,如列表、元组、字符串等。

返回值

  • 此方法在应用 expression 和条件后返回一个新列表。

for 循环和列表推导式之间的区别

for 循环和列表推导式之间的主要区别在于,for 循环通常由多行代码组成,用于迭代元素并构建新列表,而

列表推导式则只需要一行代码即可创建新列表。因此,它更清晰、更易读,而且效率更高。

让我们看一个例子来清楚地理解这一点

1) 使用 for 循环

在此示例中,我们使用 for 循环来查找列表中数字的平方。

示例

立即执行

输出

[16, 1024, 36, 5776, 144, 1369, 2704]

说明

在上面的例子中,我们创建了一个名为 numlist 的数字列表,以及一个名为 square 的空列表来存储结果。我们使用 for 循环迭代 numlist 中的每个元素,并使用 sol ** 2 对每个数字进行平方。然后,我们将结果追加到 square 列表中。

2) 使用列表推导式

在此示例中,我们使用列表推导式方法创建新列表

示例

立即执行

输出

[16, 1024, 36, 5776, 144, 1369, 2704]

说明

在上面的例子中,我们使用列表推导式,通过对原始列表 numlist 中的每个元素进行平方,创建了一个名为 'square' 的新列表。

我们可以清楚地看到 'for' 循环和列表推导式之间的区别。'for' 循环需要三行代码,而列表推导式只需要一行代码。

列表推导式中的条件语句

列表推导式中的条件语句允许使用 if-else 来根据特定条件确定或提取项。

让我们看一些例子来理解 Python 列表推导式中条件语句的用法

示例 1

在此示例中,如果元素包含字符 'a',我们将从给定列表中创建包含该元素的列表。

示例

立即执行

输出

['tata', 'honda', 'toyota', 'hyundai', 'skoda', 'mahindra']

说明

在上面的例子中,我们有一个名为 'car' 的列表。我们使用列表推导式创建了一个名为 new_carlist 的新列表,其条件是仅提取包含字符 'a' 的汽车名称。

示例 2

在下面的示例中,我们将创建一个不包含印度汽车品牌的汽车列表。

示例

立即执行

输出

['honda', 'toyota', 'hyundai', 'skoda', 'suzuki', 'BMW', 'Mercedes']

说明

在这里,我们使用列表推导式来排除汽车列表中的印度汽车。条件 'if x not in indian_cars' 会过滤掉 'indian_cars' 中列出的任何汽车,并将非印度汽车添加到 'new_carlist' 中。

带字符串的列表推导式

列表推导式也有助于我们从字符串中提取元素。

让我们看一个例子

示例

立即执行

输出

['o', 'i', 'e']

说明

在上面的例子中,我们使用列表推导式遍历字符串 "TpointTech" 并提取所有元音字母。'solution' 存储结果。

从 range() 创建列表

range() 函数在列表推导式中使用时,有助于我们打印一个包含大量数字的列表。

这是一个演示相同内容的示例

示例

立即执行

输出

[0, 1, 2, 3, 4]

说明

在此示例中,我们使用列表推导式创建了一个包含数字的列表。在这里,我们可以看到我们使用了 range() 函数返回一个包含 0 到 4 值的 range 对象。

使用嵌套循环创建列表

我们也可以在列表推导式中使用嵌套循环来创建列表。让我们看一个示例,展示如何使用嵌套循环创建列表

示例

立即执行

输出

[(1, 1), (2, 8), (3, 27), (4, 64), (5, 125)]

说明

在上面的例子中,我们创建了一个嵌套的 for 循环,i in range(1,6) 提供 1 到 5 的值,对于每个 i,我们使用 i**3 计算其立方。列表推导式将输出存储为对。

展平列表的列表

在 Python 中,我们可以使用列表推导式来展平嵌套列表(或列表的列表)。展平列表意味着将嵌套列表转换为包含所有元素的单个列表。

让我们看一个下面的例子

示例

立即执行

输出

[3, 56, 21, 59, 15, 36, 27, 88, 69]

说明

  • for y in list:它遍历每个子列表 [1,2,3],然后是 [4,5,6]
  • for x in y:它遍历该子列表中的每个元素。
  • x:将每个元素添加到展平的列表中

结论

Python 列表推导式是一种从列表中提取项并基于特定条件创建新列表的有效方法。

列表推导式可用于

  • 字符串(字符过滤或转换)
  • 嵌套循环(用于矩阵运算或组合)
  • 列表展平
  • range() 方法(用于生成序列)
  • 条件语句(用于过滤或修改数据)

列表推导式不仅限于这些示例和应用;一个人必须尝试探索这个主题的深度。

Python 列表推导式常见问题解答

1. Python 中的列表推导式是什么?

Python 列表推导式提供了一种简洁高效的方法来创建新列表。

2. 我们可以在列表推导式中使用嵌套循环吗?

是的,我们可以在列表推导式中使用嵌套循环。这是一个例子。

示例

立即执行

输出

[(1, 1), (2, 4), (3, 9), (4, 16), (5, 25)]

3. 我们可以在列表推导式中使用字符串吗?

是的,我们可以在列表推导式中使用字符串。

示例

立即执行

输出

['o', 'i', 'e']

4. 列表推导式比传统循环快吗?

是的,通常列表推导式在创建新列表方面更快,内存效率更高。

5. 何时我不应使用列表推导式?

当代码包含多个嵌套循环或您不需要列表时,不应使用列表推导式。