一个很常见的变成任务是基于另一个序列的处理来产生一系列的值。通常,这个任务在Python中使用所谓的解析语法后实现很简单。
一般形式如下:
[expression for value in iterable if condition]
if子句是可选的。解析计算与下面的传统控制结构计算结果列表在逻辑上是等价的。
result = []
for value in iterable
if condtion:
result.append(expression)
Python支持类似的集、生成器或字典的解析语法。
[k*k for k in range(1,n+1)] #列表解析
{k*k for k in range(1,n+1)} #集合解析
(k*k for k in range(1,n+1)) #生成器解析
{k : k*k for k in range(1,n+1)} #字典解析
当结果不需要存储在内存中时,生成器语法特别有优势。