zip函数接受任意多个(包括0个和1个)序列作为参数,返回一个tuple列表。(在海豚实习时自己写了一个要用到zip的函数,那个例子非常代表性)
示例1
for i,j in zip(range(3),range(5)):
print(zip(range(3),range(5)))
print(i)
print(j) xbwang@xbwang-desktop:~/Desktop$ python un.py
[(0, 0), (1, 1), (2, 2)]
0
0
[(0, 0), (1, 1), (2, 2)]
1
1
[(0, 0), (1, 1), (2, 2)]
2
2 可以看到zip返回出来的还是一个tuple列表,print(i)和print(j)之所以返回的是一个一个的数,而不是tuple列表,就相当于你在一个tuple列表里面进行for循环,一样返回的是里面的元素
示例2
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)]
示例3,在两个list长度不相等时的情况:
x = [1, 2, 3]
y = [4, 5, 6, 7]
xy = zip(x, y)
print xy
运行的结果是:
[(1, 4), (2, 5), (3, 6)]
示例4
>>> name=('jack','beginman','sony','pcky')
>>> age=(2001,2003,2005,2000)
>>> for a,n in zip(name,age):
print a,n 输出:
jack 2001
beginman 2003
sony 2005
pcky 2000
示例5,只有一个list的情况:
x = [1, 2, 3]
x = zip(x)
print x
运行的结果是:
[(1,), (2,), (3,)]
特别注意:在文件读写中也可以运用zip函数
f = open('/home/xbwang/Desktop/id_title','r')
f1 = open('/home/xbwang/Desktop/res','r')
f2 = open('/home/xbwang/Desktop/pos','r')
f3 = open('/home/xbwang/Desktop/cut_pos1','a')
for line,line1,line2 in zip(f,f1,f2):
line = line[:-1]
line1 = line1[:-1]
f3.write(line+' '+line1+' '+line2)
这是我自己写的一个将3个文件的内容按照一定规则排列写到一个文件里。
查询这个,经常会去查询多变量的for循环