與python2不同的是,zip傳入可迭代物件,將物件中對應的元素打包成乙個個tuple,返回zip物件。
a=[1,2,3]
b=[4,5,6]
c=['a','b','c','d']
a_b=zip(a,b)
print(a_b)
zip物件是迭代器iterator,可以驗證一下:
from collections import iterator
isinstance(a_b,iterator)
true
所以要用list得到預想的結果。
a_b=list(zip(a,b))
a_c=list(zip(a,c))
print(a_b)
print(a_c)
[(1, 4), (2, 5), (3, 6)]
[(1, 'a'), (2, 'b'), (3, 'c')]
可以看到a與c長度不一致時,按照長度短的a返回list。 類似,利用*
將a_b,a_c, unzip解壓時,返回的也是迭代器,用list得到預期結果。
list(zip(*a_b))
list(zip(*a_c))
[(1, 2, 3), (4, 5, 6)]
[(1, 2, 3), ('a', 'b', 'c')]
例子:完成矩陣轉置,
d=[a,b]
list(map(list,zip(*d)))
[[1, 4], [2, 5], [3, 6]]
或者用列表生成式:[ [row[x] for row in d] for x in range(len(d[0]))]
Python3 內建函式 zip
zip 是python的乙個內建函式,它接受一系列可迭代的物件作為引數,將物件中對應的元素按順序組合成乙個tuple,每個tuple中包含的是原有序列中對應序號位置的元素,然後返回由這些tuples組成的list。若傳入引數的長度不等,則返回list的長度和引數中長度最短的物件相同。在所有引數長度相...
Python3學習筆記
最近在起步學python,聚合一下這個過程中蒐集的資源和對一些基本知識做個小總結,語法基於python3,方便以後查詢。python官方文件 不錯的基礎課程 基本語法 演算法 建模 練習 以下是整理常用可能遺忘的基礎點 python3中的輸入是input 獲得使用者輸入的字串 a input ple...
python3學習筆記
redis訊息佇列的使用 coding utf 8 created on tue mar 26 15 58 34 2019 author admin import redis class redisqueue object def init self,name,namespace queue red...