python中zip函數


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循環


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM