久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

Python3減少代碼量的兩個內(nèi)置函數(shù)

 hdzgx 2019-12-26

Python減少代碼量的兩個內(nèi)置函數(shù)

前言

Python中內(nèi)置了幾個非常好用的函數(shù),。

當(dāng)你掌握了這幾個函數(shù)的用法后,有些場景下,,不用自己去實(shí)現(xiàn)多余的冗余代碼編寫,,只需要調(diào)用這些函數(shù),便能很簡短的幫你實(shí)現(xiàn)功能,。

今天來分享下兩個函數(shù)的場景以及用法,。

PS:下例子截圖演示均在 jupyter notebook 中完成。

enumerate

enumerate,,單詞是枚舉的意思,。

枚舉是什么意思呢?來看下 Java 中的枚舉,,直接選自百度提問,。這個例子舉得比較生動。

在你理解了枚舉的意思后,,來看下 Python 中枚舉函數(shù)的使用場景,。

場景:

在 Python 中,我們想去遍歷一個 list 列表,,有哪種方式可以將列表中的元素全部打印出來呢,?

假設(shè)現(xiàn)在有個 list ,其中包含了 1 - 5 五個數(shù)字,,用程序?qū)⒚總€元素打印出來,。

number_list = [1,2,3,4,5]

自行思考下,再繼續(xù)往后看,。

方法一,,直接 for 循環(huán):

for num in number_list:print(num)

方法二,, for + range() + len():

for i in range(len(number_list)):print(number_list[i])

不管哪種方式,你最終都能得到如下結(jié)果:

如果,,現(xiàn)在讓你將列表中的每個元素和它對應(yīng)的索引位置打印出來,,如何做到?依然是自行思考下,,再往后看,。

是不是直接用第一種方法 for...in list 的方式,顯然不能完成,。

而第二種方法可以完成,,只需要如下:

但是這種方式是否覺得非常麻煩?你寫的代碼既套用 range ,,又需要套用 len,,過于冗長。

此時,,Python 內(nèi)置函數(shù) enumerate 完美的解決了這個場景下問題,。

for i,num in enumerate(number_list):print(f'當(dāng)前索引位置:{i}')print(f'當(dāng)前元素:{num}')

對比下兩種方式,相信你會愛上第二種寫法:

用 enumerate 函數(shù),,遍歷出來的第一個變量是索引位置,,第二個是結(jié)果,這二者順序不可顛倒,,第一個變量一定是 int 類型的數(shù)字,。至于變量的名字,想叫什么叫什么,,沒有影響,。

例子中 i,num ,。你也可以替換成別的,。

記住場景,就容易想到 enumerate 函數(shù)了,,當(dāng)你遍歷序列時,,既想要序列對應(yīng)索引位置,又想要序列中的內(nèi)容,,選它,,enumerate() !

還記得序列的概念嗎,?就是能遍歷的類型,。

zip

看到 zip 這個單詞時,但凡用過壓縮包的同學(xué)都不陌生吧,。

我們經(jīng)常會看到,,許多文件都是 xxx.zip 的文件格式,即壓縮包,。

有了上述理解,,來看下 zip 的場景。

場景:

有個男士列表,,里面分別是 黃曉明,,劉愷威,賈乃亮,。

有個女士列表,,里面分別是 楊穎,楊冪,,李小璐,。

能看出來,男士列表和女士列表,,都是按照順序配對寫的,。

如果將兩個 list 中的對應(yīng)元素,將他們?nèi)〕鰜斫M合成夫妻呢,?

man_list = ['黃曉明','劉愷威','賈乃亮']woman_list = ['楊穎','楊冪','李小璐']

想要的結(jié)果:

[('黃曉明','楊穎'),('劉愷威','楊冪'),('賈乃亮','李小璐')]

自行思考,,正常我們需要怎么做,才能實(shí)現(xiàn),?

正常邏輯:

for i in range(len(man_list)):couple_list.append((man_list[i],woman_list[i]))print(couple_list)

遍歷第一個元素列表,,獲取到索引的同時,將男女列表此時的索引元素組成元組,,放入到 couple_list 中,。

看下我們的 zip 函數(shù):

zip可以將多個列表、元組或其它序列成對組合成一個元組列表,。

所以,,你只需要完美的將兩個元素傳入,最終轉(zhuǎn)為 list 即可:

couple_zip_list = list(zip(man_list,woman_list))print(couple_zip_list)

什么叫做簡潔,?一行代碼搞定,,有木有覺得就是這么 easy 啊,!

別急,,正常場景,一般不會這么巧的給你兩個同等元素列表,,假設(shè)還有另外一個列表,,我們將其定義為是否有孩子列表吧。

關(guān)注娛樂的朋友都知道,,其實(shí)這三對夫妻都已經(jīng)有孩子了,,分別叫小海綿,,小糯米,賈云馨,。

man_list = ['黃曉明','劉愷威','賈乃亮']woman_list = ['楊穎','楊冪','李小璐']has_child = [True,True]

現(xiàn)在有三個列表,,依然是順序打包組合。最后來猜猜結(jié)果會如何呢,?

看到,,結(jié)果沒有最后一對夫妻的結(jié)果了。,。,。

zip雖然可以處理任意多的序列,但最終元素的個數(shù)取決于最短的序列,。

逆向思維一下,,如果 zip 能正向打包,是否可以逆向解包呢,?

答案,,當(dāng)然是可以!zip解包 確實(shí)很神奇,。

man_tuple,woman_tuple = zip(*couple_list)

注意,,解包出來的類型是 tuple 而不是 list。

組合打法

上述介紹的兩個函數(shù),,可以結(jié)合使用,,形成終極大招:

場景:

假設(shè)三人同時在一場婚禮上舉辦。

man_list = ['黃曉明', '劉愷威', '賈乃亮']woman_list = ['楊穎', '楊冪', '李小璐']

此時牧師要一次宣講,,第幾對新人,,男方是誰,女方是誰,。,。打印如下:

當(dāng)前第1對夫妻: 男方:黃曉明, 女方:楊穎

所以,結(jié)合場景,,組合今天介紹的 enumerate 和 zip 這樣使用,,就能讓牧師完美的講出來。

for i, (man, woman) in enumerate(zip(man_list, woman_list)):print(f'當(dāng)前第{i+1}對夫妻: 男方:{man}, 女方:{woman}')

總結(jié)

好了,,簡單的回顧總結(jié)一下今天的內(nèi)容,。

第一個 enumerate 函數(shù)的場景,什么時候會用到,?當(dāng)你既想要序列中的索引坐標(biāo),,又想要內(nèi)容的時候!注意順序。

第二個 zip 函數(shù)的場景,,什么時候會用到,?當(dāng)你需要對多個序列同時進(jìn)行遍歷的時候,用 zip 會省不少事,!

特定場景下,,結(jié)合兩種方法使用,可以達(dá)到神奇的效果,。

總之,這兩種內(nèi)置方法從使用角度來講,,大大的降低了代碼編寫的復(fù)雜度,,非常友好。

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式,、誘導(dǎo)購買等信息,,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,,請點(diǎn)擊一鍵舉報(bào),。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多