在 集合类型 章节,我们知道可以使用 []
、 {}
或 ()
表达式来创建集合类型或元组。除了通过明文的方式,将初始元素写在表达式内,还可以使用推导式,将另一个集合类型内的元素映射到当前集合。
列表类推导式
最基本的推导式,用法如下:
1 | expr for x in iterable#expr表达式即映射关系,用于转换迭代变量 `x`。 |
推导式会生成一个生成器对象,包含所有源集合的元素的映射。
推导式本质上会生成一个生成器对象,能够实现创建集合实际上是一个语法糖,当其位于集合类型中时会被解释器展开。
1 | [x for x in range(5)]#生成器对象包括 0 1 2 3 4几个元素 |
这样的推导式可以用于 set
、list
、tuple
等列表性质的类型。
1 | {x for x in range(5)}#set |
由于元组初始化的性质,单一的生成器对象会被之间识别为变量,所以需要使用
tuple
函数来创建元组。
字典推导式
和列表类推导式类似,只是 expr
必须为键值对表达式。
1 | {key_expr:value_expr for x in iterable} |
推导式可以用于配合 range
函数快速生成集合类型,也可以将现有集合的元素映射到新集合,十分有用。