当前位置:实例文章 » Python实例» [文章]深入理解 Python 列表推导式:从基础到高阶应用

深入理解 Python 列表推导式:从基础到高阶应用

发布人:shili8 发布时间:2023-05-21 19:35 阅读次数:31

Python 列表推导式是一种简洁而强大的语法,可以快速地生成列表。在本文中,我们将从基础到高阶应用,深入理解 Python 列表推导式。

## 基础

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

[expression for item in iterable]


其中,`expression` 是一个表达式,`item` 是可迭代对象中的每个元素,`iterable` 是一个可迭代对象,例如列表、元组、集合、字典等。

下面是一个简单的例子,使用列表推导式生成一个包含 1 到 10 的整数的列表:

numbers = [i for i in range(1 11)]
print(numbers)  # [1 2 3 4 5 6 7 8 9 10]


在这个例子中,`expression` 是 `i`,`item` 是 `range(1 11)` 中的每个元素,`iterable` 是 `range(1 11)`。

列表推导式还可以包含条件语句,例如:

even_numbers = [i for i in range(1 11) if i % 2 == 0]
print(even_numbers)  # [2 4 6 8 10]


在这个例子中,只有当 `i` 是偶数时,才会将 `i` 添加到列表中。

## 高阶应用

### 嵌套列表推导式

列表推导式可以嵌套,例如:

matrix = [[i * j for j in range(1 4)] for i in range(1 4)]
print(matrix)  # [[1 2 3] [2 4 6] [3 6 9]]


在这个例子中,外层列表推导式生成了一个包含 3 个元素的列表,每个元素都是一个内层列表推导式生成的列表。内层列表推导式生成了一个包含 3 个元素的列表,每个元素都是 `i * j` 的结果。

### 多个可迭代对象

列表推导式可以使用多个可迭代对象,例如:

pairs = [(x y) for x in range(1 3) for y in range(3 5)]
print(pairs)  # [(1 3) (1 4) (2 3) (2 4)]


在这个例子中,使用了两个 `range` 对象,生成了所有可能的 `(x y)` 组合。

### 字典推导式

除了列表推导式,Python 还支持字典推导式。字典推导式的语法如下:

{key_expression: value_expression for item in iterable}


其中,`key_expression` 和 `value_expression` 分别是键和值的表达式,`item` 是可迭代对象中的每个元素,`iterable` 是一个可迭代对象。

下面是一个简单的例子,使用字典推导式生成一个包含 1 到 10 的整数的字典:

numbers_dict = {i: i * i for i in range(1 11)}
print(numbers_dict)  # {1: 1 2: 4 3: 9 4: 16 5: 25 6: 36 7: 49 8: 64 9: 81 10: 100}


在这个例子中,`key_expression` 是 `i`,`value_expression` 是 `i * i`,`item` 是 `range(1 11)` 中的每个元素,`iterable` 是 `range(1 11)`。

### 集合推导式

类似于列表推导式和字典推导式,Python 还支持集合推导式。集合推导式的语法如下:

{expression for item in iterable}


其中,`expression` 是一个表达式,`item` 是可迭代对象中的每个元素,`iterable` 是一个可迭代对象。

下面是一个简单的例子,使用集合推导式生成一个包含 1 到 10 的整数的集合:

numbers_set = {i for i in range(1 11)}
print(numbers_set)  # {1 2 3 4 5 6 7 8 9 10}


在这个例子中,`expression` 是 `i`,`item` 是 `range(1 11)` 中的每个元素,`iterable` 是 `range(1 11)`。

## 总结

Python 列表推导式是一种简洁而强大的语法,可以快速地生成列表。除了基本语法外,还可以嵌套、使用多个可迭代对象、生成字典和集合。掌握列表推导式的使用,可以让我们的代码更加简洁、优雅。

相关标签:基础
其他信息

其他资源

Top