上一篇
列表推导式
列表推导式提供了一种简洁的方式来创建列表,通常用于将一种列表转换为另一种列表。
基本语法
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]
发表评论