最經看《利用python進行資料分析》的前幾章,遇到zip()函式與zip(*)函式經常是暈頭轉向,這裡參考了一些資料,結合自己的理解說兩句,歡迎交流指正~
首先來看zip(),該函式將列表、元組或其他序列的元素配對,新建乙個元組構成的列表。這句話好理解,即將兩個不同序列的元素以元組形式一一配對,舉個例子:
注意:zip所得元組形式的列表需用list()函式加以顯示。a=
['1'
,'2'
,'3']b=
['4'
,'5'
,'6'
(list
(zip
(a,b)))
#輸出如下:[(
'1',
'4'),(
'2',
'5'),(
'3',
'6')
]
那麼zip(*)又是個什麼東東呢?書上是這樣講的:zip函式有一種機智的方式去「拆分」序列,這種方式的另一種思路就是將行的列表轉換為列的列表。
聽上去稍顯拗口,我是這樣解讀的:即將原來矩陣(列表雖沒有陣列的性質,但作者「行」、「列」的用詞可以讓我們拓寬下自己的想象,方便理解)的每列拎出來作為一行,再以元組的形式塞回去,這樣就達到了「將原來的行的列表轉換為列的列表」的目的,以例子說明:
再來看個例子:c=[[
'1',
'2',
'3'],[
'4',
'5',
'6']
(list
(zip
(*c)))
#輸出如下:[(
'1',
'4'),(
'2',
'5'),(
'3',
'6')
]
x=
['河海大學'
,'南京郵電大學']y=
['hhu'
,'njupt'
]#如果print以下兩個會輸出什麼呢?
(list
(zip
(x,y)))
(list
(zip(*
zip(x,y)))
)#就是它們!:[(
'河海大學'
,'hhu'),
('南京郵電大學'
,'njupt')]
[('河海大學'
,'南京郵電大學'),
('hhu'
,'njupt'
)]
即令z=zip(x,y),為什麼第二個print是空列表呢?歡迎有經驗的童鞋交流解釋下*_*x=
['河海大學'
,'南京郵電大學']y=
['hhu'
,'njupt']z=
zip(x,y)
(list
(z))
(list
(zip
(*z)))
#輸出結果:[(
'河海大學'
,'hhu'),
('南京郵電大學'
,'njupt')]
Python中的Zip 函式
zip 函式用於將可迭代的物件作為引數,將物件中對應的元素打包成乙個個元組,然後返回由這些元組組成的列表。如果各個迭代器的元素個數不一致,則返回列表長度與最短的物件相同,利用 號操作符,可以將元組解壓為列表。zip 語法 zip iterable,引數說明 返回元組列表。以下例項展示了 zip 的使...
Python中的zip函式
定義 zip iterable,zip 是python的乙個內建函式,它接受一系列可迭代的物件作為引數,將物件中對應的元素打包成乙個個tuple 元組 然後返回由這些tuples組成的list 列表 若傳入引數的長度不等,則返回list的長度和引數中長度最短的物件相同。利用 號操作符,可以將list...
python中的zip函式
先貼上原始碼 zip iter1 iter2 zipobject return a zip object whose next method returns a tuple where the i th element comes from the i th iterable argument.th...