Python 列表、字典与生成器推导式详解
在代码的交响乐中,简洁与高效是永恒的旋律。而 Python 的推导式,便是那指挥棒下最华丽的乐章,它将循环与过滤的逻辑凝练于一行,如诗,亦如画。
当我们漫步于 Python 的世界,总会被其'优雅'、'明确'、'简单'的哲学所折服。这不仅仅是关于语法糖,更是一种思想的升华——用最少的字符,表达最清晰的意图。今天,就让我们一同揭开 Python 推导式(Comprehensions)的神秘面纱,探索列表推导式、字典推导式以及生成器表达式的魅力,感受它们如何化繁为简,为我们的代码注入灵魂。
列表推导式 (List Comprehensions)
列表推导式是 Python 中最广为人知、也最受喜爱的特性之一。它允许我们通过一个表达式,从一个已有的可迭代对象中创建一个新列表,整个过程紧凑而富有表现力。
传统方式 vs. 推导式:一场代码的美学革命
想象一下,我们需要创建一个包含 1 到 10 的平方数的列表。
传统 for 循环写法:
squares = []
for i in range(1, 11):
squares.append(i * i)
# squares -> [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
这种方式虽然直观,但需要多行代码,包含了变量初始化、循环、追加操作等多个步骤,显得有些繁琐。
列表推导式写法:
squares = [i * i for i in range(1, 11)]
# squares -> [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
一行代码,便完成了所有工作。它更像是一种声明:'我需要一个列表,它的元素是 i 的平方,其中 i 来自于 1 到 10 的范围。'这种'所见即所得'的写法,正是 Python 美学的精髓。
解构列表推导式的语法
核心结构如下:
- 核心循环部分:
for 元素 in 可迭代对象 - 输出表达式
- 可选的过滤条件
- 最终生成的新列表
一个完整的列表推导式可以包含一个可选的 if 条件判断,用于过滤元素。
应用案例:过滤偶数并计算其立方
假设我们有一个列表,想要得到其中所有偶数的立方。
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
even_cubes = [num ** num numbers num % == ]


