# 列表推导
>>> [x * x for x in range(10) if x % 3 == 0]
[0, 9, 36, 81]
# 字典推导
>>> {i: "{} squared is {}".format(i, i**2) for i in range(5)}
{0: '0 squared is 0', 1: '1 squared is 1', 2: '2 squared is 4', 3: '3 squared is 9', 4: '4 squared is 16'}
# 生成器推导(即生成器表达式)
# 注意:没有元组的推导
>>> g = (i**2 for i in range(2, 10))
>>> type(g)
<class 'generator'>
>>> next(g)
4
>>> list(g)
[9, 16, 25, 36, 49, 64, 81]
# 当计算到最后一个元素时,再向下计算会抛出异常
>>> g = (i for i in range(2))
>>> next(g);next(g)
0
1
>>> next(g);next(g)
StopIteration
# 采用for语句迭代就不用担心会跑出异常(或转化为list)
>>> g = (x*x for x in range(3))
>>> for n in g:
... print(n)
...
0
1
4