list comprehension/dict comprehension/set comprehension/generator comprehension
列表解析式是将一个列表(实际上适用于任何可迭代对象(iterable))转换成另一个列表的工具。在转换过程中,可以指定元素必须符合一定的条件,才能添加至新的列表中,这样每个元素都可以按需要进行转换。
list comprehension:
>>> [a+'-'+b for a in "ABC" for b in "DEF"]
['A-D', 'A-E', 'A-F', 'B-D', 'B-E', 'B-F', 'C-D', 'C-E', 'C-F']
dict comprehension:
交换字典的key和value
{'A': 'L', 'C': 'L', 'B': 'L'}
>>> dt = {'A':1,'B':2}
>>> {value:key for key,value in dt.items()}
{1: 'A', 2: 'B'}
发现的有意思的:
>>> {key:value for key in "ABC" for value in range(1,10)}
{'A': 9, 'C': 9, 'B': 9}
>>> {key:value for key in "ABC" for value in "JKL"}
{'A': 'L', 'C': 'L', 'B': 'L'}
用此方法生成字典,造成值都是一样的,这个需要注意
set comprehension:
>>> s = set([1,2,4])
>>> {i**i for i in s}
set([256, 1, 4])
generator comprehension:
>>> g = (a+2 for a in range(10))
>>> for gg in g:
... print gg
...
2
3
4
5
6
7
8
9
10
11