推导式是一种简洁的方式来创建序列(如列表、集合、字典等)的方法。它们可以通过在一行代码中定义和填充序列,减少了传统循环的编写量。
一、列表
列表推导式(List Comprehension): 列表推导式用于创建列表
语法形式为:[表达式 for item in 可迭代对象 if 条件判断]。
示例 1: 创建一个包含平方数的列表
squares=[x**2 for x in range(1,6)]
print(squares)#输出:[1,4,9,16,25]
也可以用for循环遍历实现,示例
squares=[]
for i in range(1,6):
squares.append(i**2)
print(squares)
示例 2: 过滤奇数并创建一个新列表
#列表推导式
numbers=[1, 2, 3, 4, 5, 6]
evens=[x for x in numbers if x%2==0]
print(evens)#输出:[2, 4, 6]
二、字典
字典推导式(Dictionary Comprehension): 字典推导式用于创建字典
语法形式为:{key_expression: value_expression for item in 可迭代对象 if 条件判断}。
示例: 创建一个字典,将数字映射为其平方数
numbers=[1, 2, 3, 4, 5]
square_dict={x: x**2 for x in numbers}
print(square_dict)#输出: {1: 1,2:4,3:9,4:16,5:25}
三、集合
集合推导式(Set Comprehension): 集合推导式用于创建集合
语法形式为:{表达式 for item in iterable if 条件判断}。
示例: 创建一个包含偶数的集合
numbers=[1, 2, 3, 4, 5, 6]
evens={x for x in numbers if x%2==0}
print(evens)#输出:{2,4,6}
示例:统计文本中字符出现的次数(使用字典推导式)
my_text="i love you and you love me"
char_count={c:my_text.count(c) for c in my_text}
print(char_count)
四、元组
生成器表达式(Generator Expression): 生成器表达式类似于列表推导式,但它返回一个生成器对象,而不是创建一个完整的列表。语法形式为:(表达式 for item in 可迭代对象 if 条件判断)。
示例: 创建一个生成器对象,生成平方数
numbers=[1,2,3,4,5]
square_generator=(x**2 for x in numbers)
print(square_generator)#输出: <generator object <genexpr> at 0x7f9a6d8f2a50>