定義:zip([iterable, …])
zip()是python的乙個內建函式,它接受一系列可迭代的物件作為引數,將物件中對應的元素打包成乙個個tuple(元組),然後返回由這些 tuples組成的list(列表)。若傳入引數的長度不等,則返回list的長度和引數中長度最短的物件相同。利用*號操作符,可以將list unzip(解壓),看下面的例子就明白了:
>>> a = [1,2,3(1)二維矩陣轉置]>>> b = [4,5,6
]>>> c = [4,5,6,7,8
]>>> zipped = zip
(a,b)
[(1, 4), (2, 5), (3, 6
)]>>> zip
(a,c)
[(1, 4), (2, 5), (3, 6
)]>>> zip(*zipped)
[(1, 2, 3), (4, 5, 6)]
比如我們有乙個由列表描述的二維矩陣
a = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] 通過python列表推導的方法,我們也能輕易完成這個任務
(從下邊的**也可以看出這種one-line for-loop的index順序從左向右依次是維數)
print [ [row[col] for row in a] for col in range(len(a[0另外一種方法就是利用zip函式:]))]
[[1, 4, 7], [2, 5, 8], [3, 6, 9]]
>>> a = [[1, 2, 3], [4, 5, 6], [7, 8, 9這種方法速度更快但也更難以理解]]>>> zip(*a)
[(1, 4, 7), (2, 5, 8), (3, 6, 9
)]>>> map(list,zip(*a))
[[1, 4, 7], [2, 5, 8], [3, 6, 9]]
zip(*a):將list看成tuple解壓,恰好得到我們「行列互換」的效果;
map(list,zip(*a)):再通過對每個元素應用list()函式,將tuple轉換為list;
zip函式接受任意多個序列作為引數,將所有序列按相同的索引組合成乙個元素是各個序列合併成的tuple的新序列,新的序列的長度以引數中最短的序列為準。另外(*)操作符與zip函式配合可以實現與zip相反的功能,即將合併的序列拆成多個tuple。
①tuple的新序列
>>>x=[1,2,3],y=['②新的序列的長度以引數中最短的序列為準.a','
b','c'
]>>>zip
(x,y)
[(1,'
a'),(2,'
b'),(3,'
c')]
>>>x=[1,2],y=['③(*)操作符與zip函式配合可以實現與zip相反的功能,即將合併的序列拆成多個tuple。a','
b','c'
]>>>zip
(x,y)
[(1,'
a'),(2,'
b')]
>>>x=[1,2,3],y=['(2)以指定概率獲取元素a','
b','c'
]>>>zip(*zip
(x,y))
[(1,2,3),('
a','
b','
c')]
>>>import random這個函式有個限制,指定概率的列表必須和元素一一對應,而且和為1,否則這個函式可能不能像預想的那樣工作。>>> def random_pick(seq
,probabilities):
x = random.uniform(0, 1
) cumulative_probability = 0.0
for item, item_probability in
zip(seq
, probabilities):
cumulative_probability +=item_probability
if x
return item
>>> for i in range(15
): random_pick(
"abc
",[0.1,0.3,0.6
]) 'c
''b'
'c''
c''a
''b'
'c''
c''c
''a'
'b''
b''c
''a''c'
先利用random.uniform()函式生成乙個0-1之間的隨機數並複製給x;
利用zip()函式將元素和他對應的概率打包成tuple;
然後將每個元素的概率進行疊加,直到和大於x終止迴圈;
這樣,」a」被選中的概率就是x取值位於0-0.1的概率,同理」b」為0.1-0.4,」c」為0.4-1.0,假設x是在0-1之間平均取值的,顯然我們的目的已經達到
python中的zip函式使用
1.函式的介紹 python zip函式使用 zip函式的用法 接受任意多個 包括0個和1個 序列作為引數,返回乙個tuple列表。接受一系列可迭代物件作為引數,將物件中對應的元素打包成乙個個tuple 元組 然後返回由這些tuples組成的list 列表 若傳入引數的長度不等,則返回list的長度...
Python中的zip函式使用示例
zip函式接受任意多個 包括0個和1個 序列作為引數,返回乙個tu程式設計客棧ple列表。具體意思不好用文本來表述,直接看示例 1.示例1 複製 如下 x 1,2,3 y 4,5,6 z 7,8,9 xyz zip x,y,z print xyz 執行的結果是 1,4,7 2,5,8 3,6,9 從...
Python中的Zip 函式
zip 函式用於將可迭代的物件作為引數,將物件中對應的元素打包成乙個個元組,然後返回由這些元組組成的列表。如果各個迭代器的元素個數不一致,則返回列表長度與最短的物件相同,利用 號操作符,可以將元組解壓為列表。zip 語法 zip iterable,引數說明 返回元組列表。以下例項展示了 zip 的使...