python中zip函式
阿新 • • 發佈:2019-01-05
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) [email protected]-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迴圈