真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

python壓縮函數(shù) python 壓縮文件

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

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

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

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

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

Python3中zip()函數(shù)再不再返回list對(duì)象,但是可以通過(guò)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)換。注意一個(gè)問(wèn)題,a和b這兩個(gè)列表是不同長(zhǎng)短的,這時(shí)候zip函數(shù)就會(huì)匹配完最短的那個(gè)便結(jié)束。

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

解包zip(*iterables)

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

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

zip高級(jí)用法

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

1. 列表推導(dǎo)

例如:

a = [1,2,3,4]

b = [5,6,7,8]

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

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

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

2. 使用zip創(chuàng)建鍵值對(duì),zip方法返回的是一個(gè)元組,用它來(lái)創(chuàng)建鍵值對(duì),簡(jiǎn)單明了。

python zip函數(shù)

zip()函數(shù)用于將可迭代的對(duì)象作為參考,將對(duì)象中對(duì)應(yīng)的元素打包成一個(gè)個(gè)遠(yuǎn)足,然后返回有這些元祖組成的列表。

zip([iterabale,....])

python中zip函數(shù)詳解

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

b=[5,9,2,4,5,7,3,1,7]

c=list(zip(a,b))#打包

print(c)

輸出內(nèi)容:[[1,5],[2,9],[3,2],[4,4],[5,5],[6,7],[7,3],[8,1],[9,7]]

d=list(zip(*c))#解包

print(d)

輸出內(nèi)容:[[1,2,3,4,5,6,7,8,9],[5,9,2,4,5,7,3,1,7]]

pythonzip函數(shù)引入什么包

zip() 函數(shù)是Python內(nèi)置函數(shù)之一,它可以將多個(gè)序列(列表、元組、字典、集合、字符串以及 range() 區(qū)間構(gòu)成的列表)“壓縮”成一個(gè) zip 對(duì)象。

6 個(gè)值得玩味的 Python 代碼

先選取了 6 個(gè)自己認(rèn)為值得玩味的 python代碼,希望對(duì)正在學(xué)習(xí) python 的你有所幫助。

1、類有兩個(gè)方法,一個(gè)是 new,一個(gè)是 init,有什么區(qū)別,哪個(gè)會(huì)先執(zhí)行呢?

運(yùn)行結(jié)果如下:

再來(lái)看另一個(gè)例子

運(yùn)行結(jié)果如下:

這里給出官方的解釋: init 作用是類實(shí)例進(jìn)行初始化,第一個(gè)參數(shù)為 self,代表對(duì)象本身,可以沒(méi)有返回值。 new 則是返回一個(gè)新的類的實(shí)例,第一個(gè)參數(shù)是 cls 代表該類本身,必須有返回值。很明顯,類先實(shí)例化才能產(chǎn)能對(duì)象,顯然是 new 先執(zhí)行,然后再 init ,實(shí)際上,只要 new 返回的是類本身的實(shí)例,它會(huì)自動(dòng)調(diào)用 init 進(jìn)行初始化。但是有例外,如果 new 返回的是其他類的實(shí)例,則它不會(huì)調(diào)用當(dāng)前類的 init 。下面我們分別輸出下對(duì)象 a 和對(duì)象 b 的類型:

可以看出,a 是 test 類的一個(gè)對(duì)象,而 b 就是 object 的對(duì)象。

2、map 函數(shù)返回的對(duì)象

map()函數(shù)第一個(gè)參數(shù)是 fun,第二個(gè)參數(shù)是一般是 list,第三個(gè)參數(shù)可以寫 list,也可以不寫,作用就是對(duì)列表中 list 的每個(gè)元素順序調(diào)用函數(shù) fun 。

有沒(méi)有發(fā)現(xiàn),第二次輸出 b 中的元素時(shí),發(fā)現(xiàn)變成空了。原因是 map() 函數(shù)返回的是一個(gè)迭代器,并用對(duì)返回結(jié)果使用了 yield,這樣做的目的在于節(jié)省內(nèi)存。 舉個(gè)例子:

執(zhí)行結(jié)果為:

這里如果不用 yield,那么在列表中的元素非常大時(shí),將會(huì)全部裝入內(nèi)存,這是非常浪費(fèi)內(nèi)存的,同時(shí)也會(huì)降低效率。

3、正則表達(dá)式中 compile 是否多此一舉?

比如現(xiàn)在有個(gè)需求,對(duì)于文本 中國(guó) ,用正則匹配出標(biāo)簽里面的“中國(guó)”,其中 class 的類名是不確定的。有兩種方法,代碼如下:

這里為什么要用 compile 多寫兩行代碼呢? 原因是 compile 將正則表達(dá)式編譯成一個(gè)對(duì)象,加快速度,并重復(fù)使用。

4、[[1,2],[3,4],[5,6]]一行代碼展開該列表,得出[1,2,3,4,5,6]

5、一行代碼將字符串 "-" 插入到 "abcdefg"中每個(gè)字符的中間

這里也建議多使用 os.path.join() 來(lái)拼接操作系統(tǒng)的文件路徑。

6、zip 函數(shù)

zip() 函數(shù)在運(yùn)算時(shí),會(huì)以一個(gè)或多個(gè)序列(可迭代對(duì)象)做為參數(shù),返回一個(gè)元組的列表。同時(shí)將這些序列中并排的元素配對(duì)。zip() 參數(shù)可以接受任何類型的序列,同時(shí)也可以有兩個(gè)以上的參數(shù);當(dāng)傳入?yún)?shù)的長(zhǎng)度不同時(shí),zip 能自動(dòng)以最短序列長(zhǎng)度為準(zhǔn)進(jìn)行截取,獲得元組。

Python 之內(nèi)置函數(shù):filter、map、reduce、zip、enumerate

這幾個(gè)函數(shù)在 Python 里面被稱為高階函數(shù),本文主要學(xué)習(xí)它們的用法。

filter 函數(shù)原型如下:

第一個(gè)參數(shù)是判斷函數(shù)(返回結(jié)果需要是 True 或者 False),第二個(gè)為序列,該函數(shù)將對(duì) iterable 序列依次執(zhí)行 function(item) 操作,返回結(jié)果是過(guò)濾之后結(jié)果組成的序列。

簡(jiǎn)單記憶:對(duì)序列中的元素進(jìn)行篩選,獲取符合條件的序列。

返回結(jié)果為: ,使用 list 函數(shù)可以輸入序列內(nèi)容。

map 函數(shù)原型如下:

該函數(shù)運(yùn)行之后生成一個(gè) list,第一個(gè)參數(shù)是函數(shù)、第二個(gè)參數(shù)是一個(gè)或多個(gè)序列;

下述代碼是一個(gè)簡(jiǎn)單的測(cè)試案例:

上述代碼運(yùn)行完畢,得到的結(jié)果是: 。使用 print(list(my_new_list)) 可以得到結(jié)果。

map 函數(shù)的第一個(gè)參數(shù),可以有多個(gè)參數(shù),當(dāng)這種情況出現(xiàn)后,后面的第二個(gè)參數(shù)需要是多個(gè)序列。

map 函數(shù)解決的問(wèn)題:

reduce 函數(shù)原型如下:

第一個(gè)參數(shù)是函數(shù),第二個(gè)參數(shù)是序列,返回計(jì)算結(jié)果之后的值。該函數(shù)價(jià)值在于滾動(dòng)計(jì)算應(yīng)用于列表中的連續(xù)值。

測(cè)試代碼如下:

最終的結(jié)果是 6,如果設(shè)置第三個(gè)參數(shù)為 4,可以運(yùn)行代碼查看結(jié)果,最后得到的結(jié)論是,第三個(gè)參數(shù)表示初始值,即累加操作初始的數(shù)值。

簡(jiǎn)單記憶:對(duì)序列內(nèi)所有元素進(jìn)行累計(jì)操作。

zip 函數(shù)原型如下:

zip 函數(shù)將可迭代的對(duì)象作為參數(shù),將對(duì)象中對(duì)應(yīng)的元素打包成一個(gè)個(gè)元組,然后返回由這些元組組成的列表。

如果各個(gè)迭代器的元素個(gè)數(shù)不一樣,則返回列表長(zhǎng)度與最短的對(duì)象相同,利用星號(hào)( * )操作符,可以將元組解壓為列表。

測(cè)試代碼如下:

展示如何利用 * 操作符:

輸出結(jié)果如下:

簡(jiǎn)單記憶:zip 的功能是映射多個(gè)容器的相似索引,可以方便用于來(lái)構(gòu)造字典。

enumerate 函數(shù)原型如下:

參數(shù)說(shuō)明:

該函數(shù)用于將一個(gè)可遍歷的數(shù)據(jù)對(duì)象組合為一個(gè)索引序列,同時(shí)列出數(shù)據(jù)和數(shù)據(jù)下標(biāo),一般用在 for 循環(huán)當(dāng)中。

測(cè)試代碼如下:

返回結(jié)果為: 。

本文涉及的函數(shù)可以與 lambda 表達(dá)式進(jìn)行結(jié)合,能大幅度提高編碼效率。最好的學(xué)習(xí)資料永遠(yuǎn)是官方手冊(cè)


分享名稱:python壓縮函數(shù) python 壓縮文件
瀏覽路徑:http://weahome.cn/article/hhpdhj.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部