Python 列表推导式与字典推导式的实现

  • Post category:Python

Python 列表推导式与字典推导式 是 Python 中非常有用的特性之一。使用它们可以快速而简单地生成列表和字典对象,从而避免了冗长和重复的代码。

列表推导式

列表推导式是一种快速创建 Python 列表的方式。它的语法很简单,通常由一个可迭代对象和一个表达式组成。可以在表达式中利用可迭代对象的元素,并根据需要对它们进行处理。

下面是一个简单的例子,用于展示如何生成一个包含 10 个偶数的列表:

even_numbers = [2 * n for n in range(1, 6)]
print(even_numbers)
# 输出结果:[2, 4, 6, 8, 10]

这个列表推导式由两部分组成。第一部分是一个可迭代对象 range(1, 6),表示从 1 到 5 的整数序列。第二部分是一个表达式 2 * n,它将可迭代对象中的每个元素乘以 2,得到一个包含偶数的列表。

列表推导式还可以包含条件语句,以过滤和转换可迭代对象的元素。例如,下面是一个使用条件语句的示例,用于将列表中的奇数转换为偶数:

numbers = [1, 2, 3, 4, 5]
even_numbers = [n * 2 if n % 2 == 1 else n for n in numbers]
print(even_numbers)
# 输出结果:[2, 2, 6, 4, 10]

在这个例子中,列表推导式中的条件语句 n % 2 == 1 实现了一个筛选器,用于仅保留奇数。如果元素是奇数,则将其乘以 2,否则保留原值。

字典推导式

与列表推导式类似,字典推导式可以用于快速创建 Python 字典。与列表不同的是,在字典推导式中需要指定键和值的表达式。

下面是一个使用字典推导式创建字典的示例,它包含两个键值对:

d = {x: x*2 for x in range(1, 3)}
print(d)
# 输出结果:{1: 2, 2: 4}

在这个示例中,字典推导式可以看作是一个for循环,遍历的是可迭代对象 range(1, 3)。对于每个元素 x,都会生成一个键值对 {x: x*2},其中键是 x,值是 2*x

与列表推导式一样,字典推导式也可以包含条件语句。例如,可以使用以下代码创建一个字典,仅包含大于 2 的键值对:

d = {"key_" + str(i): i for i in range(1, 6) if i > 2}
print(d)
# 输出结果:{"key_3": 3, "key_4": 4, "key_5": 5}

在这个例子中,字典推导式中的条件语句 i > 2 实现了一个筛选器,用于仅保留大于 2 的键值对。

总之,Python 中的列表推导式和字典推导式是编写代码时非常有用的工具,可以帮助开发人员快速创建数据结构。熟练掌握它们可以提高编程效率并减少错误。