Python中zip 與zip 的使用與區別

2021-09-11 23:01:29 字數 1672 閱讀 4339

最經看《利用python進行資料分析》的前幾章,遇到zip()函式與zip(*)函式經常是暈頭轉向,這裡參考了一些資料,結合自己的理解說兩句,歡迎交流指正~

首先來看zip(),該函式將列表、元組或其他序列的元素配對,新建乙個元組構成的列表。這句話好理解,即將兩個不同序列的元素以元組形式一一配對,舉個例子:

a=

['1'

,'2'

,'3']b=

['4'

,'5'

,'6'

]print

(list

(zip

(a,b)))

#輸出如下:[(

'1',

'4'),(

'2',

'5'),(

'3',

'6')

]

注意:zip所得元組形式的列表需用list()函式加以顯示。

那麼zip(*)又是個什麼東東呢?書上是這樣講的:zip函式有一種機智的方式去「拆分」序列,這種方式的另一種思路就是將行的列表轉換為列的列表。

聽上去稍顯拗口,我是這樣解讀的:即將原來矩陣(列表雖沒有陣列的性質,但作者「行」、「列」的用詞可以讓我們拓寬下自己的想象,方便理解)的每列拎出來作為一行,再以元組的形式塞回去,這樣就達到了「將原來的行的列表轉換為列的列表」的目的,以例子說明:

c=[[

'1',

'2',

'3'],[

'4',

'5',

'6']

]print

(list

(zip

(*c)))

#輸出如下:[(

'1',

'4'),(

'2',

'5'),(

'3',

'6')

]

再來看個例子:

x=

['河海大學'

,'南京郵電大學']y=

['hhu'

,'njupt'

]#如果print以下兩個會輸出什麼呢?

print

(list

(zip

(x,y)))

print

(list

(zip(*

zip(x,y)))

)#就是它們!:[(

'河海大學'

,'hhu'),

('南京郵電大學'

,'njupt')]

[('河海大學'

,'南京郵電大學'),

('hhu'

,'njupt'

)]

x=

['河海大學'

,'南京郵電大學']y=

['hhu'

,'njupt']z=

zip(x,y)

print

(list

(z))

print

(list

(zip

(*z)))

#輸出結果:[(

'河海大學'

,'hhu'),

('南京郵電大學'

,'njupt')]

即令z=zip(x,y),為什麼第二個print是空列表呢?歡迎有經驗的童鞋交流解釋下*_*

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...