当前位置:首页 > Python > 正文

Python推导式教程:列表、字典、集合和生成器推导式写法

Python推导式:列表、字典、集合和生成器推导式

本教程详细讲解Python中各种推导式的使用方法、语法结构及实际应用场景

列表推导式

列表推导式提供了一种简洁的方式来创建列表,通常用于将一种列表转换为另一种列表。

基本语法

Python语法
[expression for item in iterable]

带条件的列表推导式

Python语法
[expression for item in iterable if condition]

示例

Python示例
# 创建0-9的平方列表
squares = [x**2 for x in range(10)]
print(squares)  # [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]

# 获取0-19中所有的偶数
evens = [x for x in range(20) if x % 2 == 0]
print(evens)  # [0, 2, 4, 6, 8, 10, 12, 14, 16, 18]

# 嵌套循环的列表推导式
matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
flattened = [num for row in matrix for num in row]
print(flattened)  # [1, 2, 3, 4, 5, 6, 7, 8, 9]

字典推导式

字典推导式提供了一种简洁的方式来创建字典,类似于列表推导式。

基本语法

Python语法
{key_expression: value_expression for item in iterable}

带条件的字典推导式

Python语法
{key: value for item in iterable if condition}

示例

Python示例
# 创建数字到其平方的映射
squares_dict = {x: x**2 for x in range(1, 6)}
print(squares_dict)  # {1: 1, 2: 4, 3: 9, 4: 16, 5: 25}

# 转换列表为字典
fruits = ['apple', 'banana', 'cherry']
fruit_lengths = {fruit: len(fruit) for fruit in fruits}
print(fruit_lengths)  # {'apple': 5, 'banana': 6, 'cherry': 6}

# 带条件的字典推导式
numbers = [1, 2, 3, 4, 5, 6]
even_squares = {x: x**2 for x in numbers if x % 2 == 0}
print(even_squares)  # {2: 4, 4: 16, 6: 36}

集合推导式

集合推导式类似于列表推导式,但创建的是集合(不包含重复元素)。

基本语法

Python语法
{expression for item in iterable}

带条件的集合推导式

Python语法
{expression for item in iterable if condition}

示例

Python示例
# 创建包含字符串长度的集合
words = ['hello', 'world', 'python', 'programming']
unique_lengths = {len(word) for word in words}
print(unique_lengths)  # {5, 6, 11} (注意:重复的长度被去除了)

# 获取0-9中奇数的平方
odd_squares = {x**2 for x in range(10) if x % 2 != 0}
print(odd_squares)  # {1, 81, 9, 49, 25}

# 从列表中创建唯一字符集合
text = ["hello", "world", "python"]
unique_chars = {char for word in text for char in word}
print(unique_chars)  # {'d', 'e', 'h', 'l', 'n', 'o', 'p', 'r', 't', 'w', 'y'}

生成器推导式

生成器推导式使用圆括号,创建一个生成器对象,可以逐个产生元素而不是一次性创建整个数据结构。

基本语法

Python语法
(expression for item in iterable)

带条件的生成器推导式

Python语法
(expression for item in iterable if condition)

示例

Python示例
# 创建一个平方生成器
squares_gen = (x**2 for x in range(5))
for num in squares_gen:
    print(num, end=' ')  # 输出: 0 1 4 9 16

# 使用生成器表达式求和
total = sum(x for x in range(1, 101))
print(total)  # 5050

# 带条件的生成器表达式
even_numbers = (x for x in range(20) if x % 2 == 0)
print(list(even_numbers))  # [0, 2, 4, 6, 8, 10, 12, 14, 16, 18]

使用推导式的优势

代码简洁

将多行循环压缩为一行,提高代码可读性

执行效率

通常比传统循环更快,尤其在处理大数据时

功能强大

支持条件过滤、嵌套循环等复杂操作

内存优化

生成器表达式特别适合处理大数据集

Python推导式教程 © 2023 - 提高您的Python编程效率

使用推导式,编写更优雅、更高效的Python代码!

发表评论