python函數(shù)包解包 python的解包

python中zip函數(shù)有哪些高級用法

zip() ?功能是從參數(shù)的多個迭代器中選取元素組合成一個新的迭代器。顧名思義,它就是一個將對象進(jìn)行打包和解包的函數(shù)。

成都創(chuàng)新互聯(lián)公司是專業(yè)的源城網(wǎng)站建設(shè)公司,源城接單;提供成都網(wǎng)站設(shè)計、網(wǎng)站建設(shè),網(wǎng)頁設(shè)計,網(wǎng)站設(shè)計,建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行源城網(wǎng)站開發(fā)網(wǎng)頁制作和功能擴(kuò)展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來合作!

它可以傳入的參數(shù)包括;元組、列表、字典等迭代器

它返回一個zip對象,其內(nèi)部元素為元組,一組一組的,可以轉(zhuǎn)化為列表或元組,這里要強(qiáng)調(diào)一下,Python2和Python3中返回的zip對象有所不同。

Python3中zip()函數(shù)再不再返回list對象,但是可以通過list強(qiáng)行轉(zhuǎn)換。(類似的函數(shù)變化還有dictionary關(guān)聯(lián)的keys()、values()、items(),map(),filter())。

打包zip(iterables)

上面的代碼使用的環(huán)境是Python3.6,其中l(wèi)ist (z)操作就是強(qiáng)制轉(zhuǎn)換。注意一個問題,a和b這兩個列表是不同長短的,這時候zip函數(shù)就會匹配完最短的那個便結(jié)束。

當(dāng)zip函數(shù)的參數(shù)只有一個時,它將從iterable中依次取一個元素,組成一個元組。

解包zip(*iterables)

解包,zip 相反,可理解為解壓,返回多維矩陣形式,有幾個組元素就返回幾維的。

比如,下面我是用三個列表組合起來的迭代式,那么解壓后就返回三維的矩陣

zip高級用法

講完了基本的再來說一下該函數(shù)的高級用法。高級用法離不開一個詞:Pythonic,就是將代碼寫的更優(yōu)雅美觀,看起來有逼格!

1. 列表推導(dǎo)

例如:

a = [1,2,3,4]

b = [5,6,7,8]

我們要同時遍歷a、b,且要對它們進(jìn)行操作,那就要放在同一個for循環(huán)內(nèi),zip函數(shù)正好合適

注意:如果是Python2環(huán)境中,要使用izip才能提高效率。

當(dāng)然,如果你需要對下標(biāo)進(jìn)行操作,那么還需要加上enumerate函數(shù)

2. 使用zip創(chuàng)建鍵值對,zip方法返回的是一個元組,用它來創(chuàng)建鍵值對,簡單明了。

Python序列解包

序列解包是Python特有的語法,它將一個序列(或任何可迭代對象)解開,并將得到的值存儲到一系列變量中。

一個有趣的例子是,利用序列解包實(shí)現(xiàn)交換兩個或多個變量的值:

一個常見的應(yīng)用場合:一個函數(shù)或方法返回一個元組(或序列多其他可迭代對象),這時可以直接使用一組變量承接返回值。例如把字典的 popitem 方法的返回值解包到key、value兩個便里中:

需要格外注意的是:解包的序列包含的元素個數(shù)必須與你在等號左邊列出的目標(biāo)個數(shù)相同,否則Python將引發(fā)異常。

然而一個方法或函數(shù)返回序列時,其長度通常是不可預(yù)測的,又或許我們只關(guān)系其中的某些值,這時 可以使用通配符( )來接收多余的值。*

qt中如何解包利用python 的struct.pack()函數(shù)打包的數(shù)據(jù)

在Python中使用struct模塊打包數(shù)據(jù)和在C/C++語言中定義一個結(jié)構(gòu)體(也是把多個成員打包到一塊)差不多。

只要客戶端告訴了你打包的數(shù)據(jù)的格式(比如:數(shù)據(jù)包的總長度、數(shù)據(jù)包中各個數(shù)據(jù)域的長度及類型,以及端序——大端還是小端),然后定義一個等價的C語言結(jié)構(gòu)體,并把接收到的數(shù)據(jù)放入一個這樣的結(jié)構(gòu)體變量(對象)中就完成了解包工作。然后,訪問結(jié)構(gòu)體中的特定成員,就是訪問傳送過來的特定數(shù)據(jù)了。

[小白自學(xué)python]如何理解與應(yīng)用裝包與解包?

您說的裝包是用元組,解包是用比如a, b, c = test_list (假設(shè)test_list為[1, 2, 3])

網(wǎng)頁名稱:python函數(shù)包解包 python的解包
網(wǎng)址分享:http://muchs.cn/article38/dosjgpp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站設(shè)計、域名注冊、網(wǎng)站營銷建站公司、服務(wù)器托管、移動網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站建設(shè)網(wǎng)站維護(hù)公司