內置函數zip

zip是幹嗎用的?

    zip函數能夠快速便捷的對多組列表或迭代器進行遍歷重組, 也就是說可以完成簡單的二維數組組成工做.python

樣例代碼: 二維數組組成
# -.- coding:utf-8 -.-
__author__ = 'zt'

l1 = [1, 2, 3, 4]
l2 = [5, 6, 7, 8]
l3 = [9, 10, 11, 12]

print zip(l1, l2, l3)         # python 2
print(list(zip(l1, l2, l3)))  # python 3

輸出結果: 這就是一個二維數組
[(1, 5, 9), (2, 6, 10), (3, 7, 11), (4, 8, 12)]
[(1, 5, 9), (2, 6, 10), (3, 7, 11), (4, 8, 12)]

 

zip的使用場景?

    多列表組成二維數組

            如上例子git

    二維數組轉換回多個列表

樣例代碼:
# -.- coding:utf-8 -.-
__author__ = 'zt'

x = [(1, 5, 9), (2, 6, 10), (3, 7, 11), (4, 8, 12)]

l1, l2, l3 = zip(*x)

print l1
print l2
print l3

輸出結果:
(1, 2, 3, 4)
(5, 6, 7, 8)
(9, 10, 11, 12)

 

    利用zip將兩組列表生成字典

樣例代碼:
# -.- coding:utf-8 -.-
__author__ = 'zt'

l1 = ["姓名", "年齡", "性別", "籍貫", "興趣愛好"]
l2 = ["張三", 25, "男", "海南", "LOL"]

print dict(zip(l1, l2))

輸出結果:
{'興趣愛好': 'LOL', '年齡': 25, '籍貫': '海南', '姓名': '張三', '性別': '男'}

 

    利用zip將字典還原回兩組列表

樣例代碼:
# -.- coding:utf-8 -.-
__author__ = 'zt'
d = {'興趣愛好': 'LOL', '年齡': 25, '籍貫': '海南', '姓名': '張三', '性別': '男'}

l1, l2 = list(zip(*d.items()))
print "l1", l1
print "l2", l2

輸出結果:
l1 ['興趣愛好', '姓名', '性別', '籍貫', '年齡']
l2 ['LOL', '張三', '男', '海南', '25']

 

注意事項和結論:

    1. 若使用zip來生成字典, 那麼列表對象或可迭代對象只能是兩個, 由於字典的每一個元素只有兩個對象(一個是鍵、另一個是值).數組

    2. 再寫代碼過程當中由於目前對二維數組處理相對來講比較少, zip內置函數使用很少, 若是之後有大量使用, 再持續補充使用場景.less

 

zip使用場景補充 -- 隨機生成mac地址:

# 代碼樣例
# -.- coding:utf-8 -.-
__author__ = 'zt'
import random
import string

for useless in range(10):
    l1 = random.sample(''.join([string.digits, 'abcdef']), 6)
    l2 = random.sample(''.join([string.digits, 'abcdef']), 6)
    print ':'.join([''.join(i) for i in list(zip(l1, l2))])


# 輸出結果:
d7:0d:23:f5:ec:48
9a:4d:82:3c:5f:29
c8:fe:75:4f:8c:59
1a:ee:b5:3d:69:28
4f:9a:f0:ec:06:db
7a:cd:52:a3:4f:d1
e1:ab:72:9d:09:5e
33:19:4b:0c:d0:95
a7:d5:fc:4f:39:91
1f:c8:fa:31:07:ed
相關文章
相關標籤/搜索