zip() ?功能是從參數的多個迭代器中選取元素組合成一個新的迭代器。顧名思義,它就是一個將對象進行打包和解包的函數。
成都創新互聯公司是專業的源城網站建設公司,源城接單;提供成都網站設計、網站建設,網頁設計,網站設計,建網站,PHP網站建設等專業做網站服務;采用PHP框架,可快速的進行源城網站開發網頁制作和功能擴展;專業做搜索引擎喜愛的網站,專業的做網站團隊,希望更多企業前來合作!
它可以傳入的參數包括;元組、列表、字典等迭代器
它返回一個zip對象,其內部元素為元組,一組一組的,可以轉化為列表或元組,這里要強調一下,Python2和Python3中返回的zip對象有所不同。
Python3中zip()函數再不再返回list對象,但是可以通過list強行轉換。(類似的函數變化還有dictionary關聯的keys()、values()、items(),map(),filter())。
打包zip(iterables)
上面的代碼使用的環境是Python3.6,其中list (z)操作就是強制轉換。注意一個問題,a和b這兩個列表是不同長短的,這時候zip函數就會匹配完最短的那個便結束。
當zip函數的參數只有一個時,它將從iterable中依次取一個元素,組成一個元組。
解包zip(*iterables)
解包,zip 相反,可理解為解壓,返回多維矩陣形式,有幾個組元素就返回幾維的。
比如,下面我是用三個列表組合起來的迭代式,那么解壓后就返回三維的矩陣
zip高級用法
講完了基本的再來說一下該函數的高級用法。高級用法離不開一個詞:Pythonic,就是將代碼寫的更優雅美觀,看起來有逼格!
1. 列表推導
例如:
a = [1,2,3,4]
b = [5,6,7,8]
我們要同時遍歷a、b,且要對它們進行操作,那就要放在同一個for循環內,zip函數正好合適
注意:如果是Python2環境中,要使用izip才能提高效率。
當然,如果你需要對下標進行操作,那么還需要加上enumerate函數
2. 使用zip創建鍵值對,zip方法返回的是一個元組,用它來創建鍵值對,簡單明了。
序列解包是Python特有的語法,它將一個序列(或任何可迭代對象)解開,并將得到的值存儲到一系列變量中。
一個有趣的例子是,利用序列解包實現交換兩個或多個變量的值:
一個常見的應用場合:一個函數或方法返回一個元組(或序列多其他可迭代對象),這時可以直接使用一組變量承接返回值。例如把字典的 popitem 方法的返回值解包到key、value兩個便里中:
需要格外注意的是:解包的序列包含的元素個數必須與你在等號左邊列出的目標個數相同,否則Python將引發異常。
然而一個方法或函數返回序列時,其長度通常是不可預測的,又或許我們只關系其中的某些值,這時 可以使用通配符( )來接收多余的值。*
在Python中使用struct模塊打包數據和在C/C++語言中定義一個結構體(也是把多個成員打包到一塊)差不多。
只要客戶端告訴了你打包的數據的格式(比如:數據包的總長度、數據包中各個數據域的長度及類型,以及端序——大端還是小端),然后定義一個等價的C語言結構體,并把接收到的數據放入一個這樣的結構體變量(對象)中就完成了解包工作。然后,訪問結構體中的特定成員,就是訪問傳送過來的特定數據了。
您說的裝包是用元組,解包是用比如a, b, c = test_list (假設test_list為[1, 2, 3])
網頁名稱:python函數包解包 python的解包
網址分享:http://m.newbst.com/article38/dosjgpp.html
成都網站建設公司_創新互聯,為您提供品牌網站設計、域名注冊、網站營銷、建站公司、服務器托管、移動網站建設
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯