亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

Python中zip()函數(shù)用法實(shí)例教程

系統(tǒng) 1764 0

本文實(shí)例講述了Python中zip()函數(shù)的定義及用法,相信對于Python初學(xué)者有一定的借鑒價(jià)值。詳情如下:

一、定義:

zip([iterable, ...])
zip()是Python的一個內(nèi)建函數(shù),它接受一系列可迭代的對象作為參數(shù),將對象中對應(yīng)的元素打包成一個個tuple(元組),然后返回由這些tuples組成的list(列表)。若傳入?yún)?shù)的長度不等,則返回list的長度和參數(shù)中長度最短的對象相同。利用*號操作符,可以將list unzip(解壓)。

二、用法示例:

讀者看看下面的例子,對zip()函數(shù)的基本用法就可以明白了:

            
>>> a = [1,2,3]
>>> 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)]

          

對于這個并不是很常用函數(shù),下面舉幾個例子說明它的用法:

1.二維矩陣變換(矩陣的行列互換)

比如我們有一個由列表描述的二維矩陣

            
a = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]

          

通過python列表推導(dǎo)的方法,我們也能輕易完成這個任務(wù)

            
print [ [row[col] for row in a] for col in range(len(a[0]))]
[[1, 4, 7], [2, 5, 8], [3, 6, 9]]

          

另外一種讓人困惑的方法就是利用zip函數(shù):

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

          

這種方法速度更快但也更難以理解,將list看成tuple解壓,恰好得到我們“行列互換”的效果,再通過對每個元素應(yīng)用list()函數(shù),將tuple轉(zhuǎn)換為list

2.以指定概率獲取元素

            
>>> import random
>>> 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 < cumulative_probability: break
 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'


          

這個函數(shù)有個限制,指定概率的列表必須和元素一一對應(yīng),而且和為1,否則這個函數(shù)可能不能像預(yù)想的那樣工作。

這里需要稍微解釋下,先利用random.uniform()函數(shù)生成一個0-1之間的隨機(jī)數(shù)并復(fù)制給x,利用zip()函數(shù)將元素和他對應(yīng)的概率打包成tuple,然后將每個元素的概率進(jìn)行疊加,直到和大于x終止循環(huán)
這樣,”a”被選中的概率就是x取值位于0-0.1的概率,同理”b”為0.1-0.4,”c”為0.4-1.0,假設(shè)x是在0-1之間平均取值的,顯然我們的目的已經(jīng)達(dá)到。


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發(fā)表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 国产亚洲一区二区精品 | 国产 日韩 欧美 亚洲 | 久草热视频在线 | 99久久精品费精品国产 | 四虎在线永久精品高清 | 男人午夜 | 国产精品久久久久久一区二区 | 成人精品视频 成人影院 | 日日操夜夜操天天操 | 思思91精品国产综合在线 | 日本在线精品视频 | 久久99国产乱子伦精品免费 | 91久久天天躁狠狠躁夜夜 | 欧美国产日韩精品 | 国产精品自在自线免费观看 | 久久www免费人成看片色多多 | 九九热这里只有精品6 | 久久婷婷久久一区二区三区 | 国产精品视频不卡 | 青青青在线视频人视频在线 | 四虎影视永久在线精品免费 | 琪琪色播 | 亚洲国产精品人久久 | 天天爽夜夜爽视频 | 一本一本久久α久久精品66 | www.亚洲精品.com | 综合欧美视频一区二区三区 | 色一情| 福利视频在线播放 | 日韩在线色 | a久久久久一级毛片护士免费 | 爱我久久国产精品 | 国内精品区一区二区三 | 亚州一级毛片 | 亚洲国产一区二区a毛片 | 久久99精品久久久久久 | 久草在线2 | 四虎地址8848jia | 国产免费资源 | 成人精品视频在线观看播放 | 国产精品偷伦视频免费观看的 |