推导式(又称解析式)是Python的一种独有特性,推导式是可以从一个数据序列构建另一个新的数据序列的结构体。共有三种推导,在Python2和3中都有支持:列表(list)推导式、字典(dict)推导式、集合(set)推导式。

列表推导式

列表推导式提供了一种简明扼要的方法来创建列表。
其语法如下:

1
variable = [out_exp for out_exp in input_list if out_exp == 2]

实际上,在之前写快速排序时,已经见过列表推导式。列表推导式在有些情况下超赞,特别是当你需要使用for循环来生成一个新列表。举个例子,你通常会这样做:

1
2
3
squared = []
for x in range(10):
squared.append(x**2)

你可以使用列表推导式来简化它,就像这样:

1
squared = [x**2 for x in range(10)]

#字典推导式
字典推导和列表推导的使用方法是类似的,它的语法如下:

1
d = {key: value for (key, value) in iterable}

看下面的例子:

1
2
3
4
5
>>> dict={"a":1, "b":2, "c":3, "d":4}
>>> d={v:k for k,v in dict.items()}
>>> print d
{1: 'a', 2: 'b', 3: 'c', 4: 'd'}
>>>

在上面的例子中,我们可以快速交换字典键—值。

集合推导式

集合推导式跟列表推导式差不多,主要区别在于:1.不使用[],使用{};2.结果中无重复;3.结果是一个set()集合,集合里面是一个序列:

1
2
3
4
>>> squared={i*2 for i in [1,1,2]}
>>> print squared
set([2, 4])
>>>