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