zip():壓縮
*zip():解壓
zip() 函數:用於將可迭代的對象作為參數,將對象中對應的元素打包成一個個元組,然后返回由這些元組組成的列表,即元組列表
但實際操作中,zip() 返回的是一個對象,在 idle 中並不將它原本的面貌展示出來。如下:
zip(a,b):將a和b中的元素對應組合成元組。結果:(1,4),(2,5),(3,6)。而要想看到這個結果,需用*zip()函數
*zip(a,b):先將a和b中的元素對應組合成元組形成結果,再將這個結果解壓,即 * 表示解壓。但不輸出,需借助print打印出來:
(此語句僅用來查看zip(a,b)的真正面貌,這三個元組之間沒有逗號)
但若先 t = zip(a,b),再print(*t)的話,沒有任何返回值,因為*zip()中的 * 和zip是連用的,不能將它們分開用。而print(*zip(t))是另一種結果,即print(*zip(zip(a,b))):
將 t 即 (1,4) (2,5) (3,6)這三個參數與空進行組合成元組
不能直接用*zip(a,b),否則:
可以用list、set、tuple對zip(a,b)進行轉化。如:list(zip(a,b))的結果為 [ (1,4) , (2,5) , (3,6) ]。再如:set(zip(a,b))的結果為 { (1,4) , (2,5) , (3,6) },但若集合中有相同的元組,則只保留一個(因為集合的元素是不重復性),為避免此情況,一般用 list 進行轉化
如果各個迭代器的元素個數不一致,則返回列表長度與最短的對象相同