Python中zip()函數用法實例教程
本文實例講述了Python中zip()函數的定義及用法,相信對于Python初學者有一定的借鑒價值。詳情如下:
一、定義:
zip([iterable, ...])
zip()是Python的一個內建函數,它接受一系列可迭代的對象作為參數,將對象中對應的元素打包成一個個tuple(元組),然后返回由這些tuples組成的list(列表)。若傳入參數的長度不等,則返回list的長度和參數中長度最短的對象相同。利用*號操作符,可以將list unzip(解壓)。
二、用法示例:
讀者看看下面的例子,對zip()函數的基本用法就可以明白了:
>>> 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)]
對于這個并不是很常用函數,下面舉幾個例子說明它的用法:
1.二維矩陣變換(矩陣的行列互換)
比如我們有一個由列表描述的二維矩陣
a = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
通過python列表推導的方法,我們也能輕易完成這個任務
print [ [row[col] for row in a] for col in range(len(a[0]))] [[1, 4, 7], [2, 5, 8], [3, 6, 9]]
另外一種讓人困惑的方法就是利用zip函數:
>>> 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解壓,恰好得到我們“行列互換”的效果,再通過對每個元素應用list()函數,將tuple轉換為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'
這個函數有個限制,指定概率的列表必須和元素一一對應,而且和為1,否則這個函數可能不能像預想的那樣工作。
這里需要稍微解釋下,先利用random.uniform()函數生成一個0-1之間的隨機數并復制給x,利用zip()函數將元素和他對應的概率打包成tuple,然后將每個元素的概率進行疊加,直到和大于x終止循環(huán)
這樣,”a”被選中的概率就是x取值位于0-0.1的概率,同理”b”為0.1-0.4,”c”為0.4-1.0,假設x是在0-1之間平均取值的,顯然我們的目的已經達到。
相關文章
python通過wxPython打開一個音頻文件并播放的方法
這篇文章主要介紹了python通過wxPython打開一個音頻文件并播放的方法,實例分析了wxPython操作音頻文件的技巧,具有一定參考借鑒價值,需要的朋友可以參考下2015-03-03python 環(huán)境變量和import模塊導入方法(詳解)
下面小編就為大家?guī)硪黄猵ython 環(huán)境變量和import模塊導入方法(詳解)。小編覺得挺不錯的,現在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-07-07python驗證碼識別教程之灰度處理、二值化、降噪與tesserocr識別
這篇文章主要給大家介紹了關于python驗證碼識別教程之灰度處理、二值化、降噪與tesserocr識別的相關資料,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考借鑒,下面隨著小編來一起學習學習吧2018-06-06python網絡爬蟲 Scrapy中selenium用法詳解
這篇文章主要介紹了python網絡爬蟲 Scrapy中selenium用法詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值2019-09-09利用python將?Matplotlib?可視化插入到?Excel表格中
這篇文章主要介紹了利用python將?Matplotlib?可視化?插入到?Excel?表格中,通過使用xlwings模塊來控制Excel插入圖表,具體詳細需要的朋友可以參考下面文章內容2022-06-06