# -*- coding: utf-8 -*- """ Created on Tue Aug 09 22:17:32 2016 @author: Administrator """ #Python的zip函数 #zip函数接受任意多个(包括0个和1个)序列作为参数,返回一个tuple列表。具体意思不好用文字来表述,直接看示例: #注意:zip函数后,值是list类型 #示例1 zip的基本工作模式 x = [1, 2, 3] y = [4, 5, 6] z = [7, 8, 9] xyz = zip(x, y, z) print xyz #[(1, 4, 7), (2, 5, 8), (3, 6, 9)] #示例2 zip函数的长度处理方式 x = [1, 2, 3] y = [4, 5, 6, 7] xy = zip(x, y) print xy #[(1, 4), (2, 5), (3, 6)] #示例3 zip函数在只有一个参数时运作的方式 x = [1, 2, 3] x = zip(x) print x #[(1,), (2,), (3,)] #示例4:zip函数在没有参数时运作的方式 x = zip() print x #[] #示例5:压缩与解压 x = [1, 2, 3] y = [4, 5, 6] z = [7, 8, 9] xyz = zip(x, y, z) print xyz #[(1, 4, 7), (2, 5, 8), (3, 6, 9)] u = zip(*xyz) print u #[(1, 2, 3), (4, 5, 6), (7, 8, 9)] #示例6 x = [1, 2, 3] r = zip(* [x] * 3) print r r = zip([x] * 3) print r #[([1, 2, 3],), ([1, 2, 3],), ([1, 2, 3],)] print [x]*3 #[[1, 2, 3], [1, 2, 3], [1, 2, 3]] #[(1, 1, 1), (2, 2, 2), (3, 3, 3)] #运行的结果是: #[(1, 1, 1), (2, 2, 2), (3, 3, 3)] #它的运行机制是这样的: #[x]生成一个列表的列表,它只有一个元素x #[x] * 3生成一个列表的列表,它有3个元素,[x, x, x] #zip(* [x] * 3)的意思就明确了,zip(x, x, x)