四、列表解析表達式 表達式中支持序列(字符串、列表、元祖),貌似也支持映射(字典)。 注意:和序列操做不一樣的是, 列表解析表達式生成的只能是一個列表; 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']