📅  最后修改于: 2023-12-03 15:25:56.729000             🧑  作者: Mango
在Python中,我们经常需要对一个数据集合进行一些操作,如过滤、变换、计算等等。使用传统的for循环方式,代码通常会比较冗长,并且可读性不高。这里介绍一种Python独有的语法--推导式(Comprehensions),可以简化集合操作的代码量,提高代码的可读性和简洁性。
Python支持以下几种推导式:
列表推导式可以快速创建一个列表。
语法:
[expression for item in iterable if condition]
解释:
expression
:表达式,可以包含变量和常量,用于计算列表中每个元素的值。item
:迭代变量,循环遍历iterable
得到的每个值。iterable
:可迭代对象,如列表、元组、字符串等。condition
:条件表达式,用于过滤迭代变量的值(可选)。示例:
# 使用for循环创建列表
squares = []
for i in range(1, 10):
squares.append(i * i)
# 使用列表推导式创建列表
squares = [i * i for i in range(1, 10)]
# 带条件的列表推导式
even_squares = [i * i for i in range(1, 10) if i % 2 == 0]
字典推导式可以快速创建一个字典。
语法:
{key_expression: value_expression for item in iterable if condition}
解释:
key_expression
:键的表达式。value_expression
:值的表达式。item
:迭代变量,循环遍历iterable
得到的每个值。iterable
:可迭代对象,如列表、元组、字符串等。condition
:条件表达式,用于过滤迭代变量的值(可选)。示例:
# 使用for循环创建字典
squares_dict = {}
for i in range(1, 10):
squares_dict[i] = i * i
# 使用字典推导式创建字典
squares_dict = {i: i * i for i in range(1, 10)}
# 带条件的字典推导式
even_squares_dict = {i: i * i for i in range(1, 10) if i % 2 == 0}
集合推导式可以快速创建一个集合。
语法:
{expression for item in iterable if condition}
解释:
expression
:表达式,可以包含变量和常量,用于计算集合中每个元素的值。item
:迭代变量,循环遍历iterable
得到的每个值。iterable
:可迭代对象,如列表、元组、字符串等。condition
:条件表达式,用于过滤迭代变量的值(可选)。示例:
# 使用for循环创建集合
squares_set = set()
for i in range(1, 10):
squares_set.add(i * i)
# 使用集合推导式创建集合
squares_set = {i * i for i in range(1, 10)}
# 带条件的集合推导式
even_squares_set = {i * i for i in range(1, 10) if i % 2 == 0}
生成器推导式可以快速创建一个生成器。
语法:
(expression for item in iterable if condition)
解释:
expression
:表达式,可以包含变量和常量,用于计算生成器中每个元素的值。item
:迭代变量,循环遍历iterable
得到的每个值。iterable
:可迭代对象,如列表、元组、字符串等。condition
:条件表达式,用于过滤迭代变量的值(可选)。示例:
# 使用for循环创建生成器
def squares_gen():
for i in range(1, 10):
yield i * i
# 使用生成器推导式创建生成器
squares_gen = (i * i for i in range(1, 10))
# 带条件的生成器推导式
even_squares_gen = (i * i for i in range(1, 10) if i % 2 == 0)
推导式可以大大简化集合操作的代码量,提高代码的可读性和简洁性。但是,在使用推导式时要注意语句不要过长,否则会影响代码的可读性。