四、列表解析表达式 表达式中支持序列(字符串、列表、元祖),貌似也支持映射(字典)。 注意:和序列操做不一样的是, 列表解析表达式生成的只能是一个列表; double = [c * 2 for c in 'spam'] print double 结果为['ss', 'pp', 'aa', 'mm']
L1 = [1, 2, 3] L2 = [4, 5, 6] L3 = [(a + b) for (a,b) in zip(L1, L2)] print L3 #结果为[5, 7, 9]
tup = (1, 2, 3) double = [c * 2 for c in tup] print double #结果为[2, 4, 6]
a = {'a':'zw','b':'ww'} b = [i * 2 for i in a.items()] print b #结果为[('a','zw','a','zw'),('b','ww','b','ww')]
下面一段代码彷佛是列表解析表达式对字典的支持,对字典进行的迭代应该是对其keys的迭代,字典的items()、 keys()、values()方法都是返回的列表,因此,这里的for i in a最好写成for i in a.keys(),效果等同。总之,能够不追究列表解析表达式到底支不支持字典,本质上,列表解析表达式就是个对列表使用了循环结构,并生成新的列表的方法。先这样理解
a = {'a':'zw','b':'ww'} b = [i * 2 for i in a] print b #结果为['aa', 'bb']