欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

一文帶你了解Python列表生成式應(yīng)用的八重境界

 更新時(shí)間:2022年09月02日 09:00:17   作者:趙卓不凡  
在Python中有非常多且好用的技巧,其中使用最多的是列表生成式,往往可以將復(fù)雜的邏輯用簡(jiǎn)單的語(yǔ)言來(lái)實(shí)現(xiàn),本文重點(diǎn)介紹列表生成式應(yīng)用的八重境界

1. 引言

在Python中有非常多且好用的技巧,其中使用最多的是列表生成式,往往可以將復(fù)雜的邏輯用簡(jiǎn)單的語(yǔ)言來(lái)實(shí)現(xiàn),本文重點(diǎn)介紹列表生成式應(yīng)用的八重境界。
閑話少說(shuō),我們直接開(kāi)始吧!

2. Level1: 基礎(chǔ)用法

最最簡(jiǎn)單的列表生成式,舉例如下:

a = [1, 2, 3]
b = [n*2 for n in a]
# b = [2, 4, 6]

上述代碼實(shí)現(xiàn)了對(duì)列表中單個(gè)元素求平方的操作。

3. Level2: 加入條件語(yǔ)句

其實(shí),我們可以在列表生成式中添加if來(lái)獲取我們需要的元素,舉例如下:

a = [1, 2, 3, 4, 5]
b = [n for n in a if n<4]
# b = [1, 2, 3]

上述代碼中,我們添加了一個(gè)條件來(lái)決定在列表生成式中應(yīng)該保留哪些元素。這里我們的條件是,如果n<4,則只保留小于4的數(shù)。

4. Level3: 加入 enumerate()

我們知道,枚舉函數(shù)enumerate()可以同時(shí)生成元素以及相應(yīng)的元素的索引。如果我們需要元素的索引以及元素,我們可以在列表生成式中使用函數(shù)enumerate()。

舉例如下:

a = ["apple", "orange", "pear"]
b = [(i,fruit) for i,fruit in enumerate(b)]
# b is [(0,"apple"), (1,"orange"), (2,"pear")]

5. Level4: 加入 zip()

更進(jìn)一步,我們知道函數(shù)zip()可以非常方便地使我們同時(shí)遍歷2個(gè)或多個(gè)列表。

在列表生成式中加入函數(shù)zip(),樣例如下:

a = ["apple", "orange", "pear"]
a2 = ["pie", "juice", "cake"]
b = [i+j for i,j in zip(a, a2)]
# b is ["applepie", "orangejuice", "pearcake"]

6. Level5: 加入三目運(yùn)算符

三元運(yùn)算符A if condition else B允許我們根據(jù)條件將每個(gè)元素轉(zhuǎn)換為其他元素。

在列表生成式中同樣可以使用三目運(yùn)算符,樣例如下:

a = [56, 45, 76, 23]
b = [("pass" if n>=50 else "fail") for n in a]
# b is ["pass", "fail", "pass", "fail"]

7. Level6: 嵌套循環(huán)

其實(shí),我們當(dāng)然也可以在列表生成式中使用嵌套循環(huán),我們來(lái)看個(gè)例子,如下:

a = [10, 20, 30]
a2 = [1, 2, 3]
b = [i+j for i in a for j in a2]
# b is [11, 12, 13, 21, 22, 23, 31, 32, 33]

實(shí)質(zhì)上,上述實(shí)現(xiàn)等價(jià)代碼如下:

newlist = []
for i in a:
    for j in a2:
        newlist.append( i+j )

8. Level7: 嵌套列表生成式

更高級(jí)一點(diǎn),我們可以在列表生成式中嵌套列表生成式,舉例如下:

a = [1, 2, 3]
b = [[i for i in range(1, n+1)] for n in a]
# b is [[1], [1, 2], [1, 2, 3]]

9. Level8: 合并上述所有技巧

最后的最后,讓我們將上述介紹的幾個(gè)技巧進(jìn)行合并,我們來(lái)看如下例子:

a = [1, 2, 3, 4, 5]
b = [[xx if xx>yy else yy for xx in range(x) for yy in range(y)] for i,(x,y) in enumerate(zip(a, a[::-1])) if i%2==0]
# [[0, 1, 2, 3, 4], [0, 1, 2, 1, 1, 2, 2, 2, 2], [0, 1, 2, 3, 4]]

上述實(shí)現(xiàn)意義不大,我們嘗試應(yīng)用上了上面介紹的所有技巧,但是畢竟代碼可讀性太大。其主要目的還是為了說(shuō)明我們可以結(jié)合多種技巧,來(lái)使我們的列表生成式實(shí)現(xiàn)更加強(qiáng)大的功能。

10. 應(yīng)用栗子

好吧,我們來(lái)看個(gè)實(shí)際的應(yīng)用例子吧!

假設(shè)我們班級(jí)上有如下同學(xué)信息:

students = [
    ("bob", "m", [67, 89, 60]),
    ("alice", "f", [97, 85, 61]),
    ("cassie", "f", [78, 91, 89]),
    ("tim", "m", [47, 57, 24]),
    ("tom", "m", [91, 79, 72]),
]

上述列表展示了每個(gè)學(xué)生的姓名、性別和考試成績(jī),這里假設(shè)如果一個(gè)學(xué)生的平均分?jǐn)?shù)≥ 50,那么這個(gè)學(xué)生有資格獲獎(jiǎng)。這里我們需要編寫(xiě)代碼,來(lái)找到上述列表中有資格獲獎(jiǎng)的男生。

樣例代碼如下:

x = [(name, "eligible" if sum(scores)/len(scores) >=50 else "not eligible") for name,gender,scores in students if gender=="m"]
#[('bob', 'eligible'), ('tim', 'not eligible'), ('tom', 'eligible')]

11. 總結(jié)

本文重點(diǎn)介紹了理解Python中的列表生成式的八重境界,并給出了相應(yīng)的代碼示例。

以上就是一文帶你了解Python列表生成式應(yīng)用的八重境界的詳細(xì)內(nèi)容,更多關(guān)于Python列表生成式的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • python批量下載圖片的三種方法

    python批量下載圖片的三種方法

    用python批量下載一個(gè)網(wǎng)頁(yè)中的圖片,需要用到擴(kuò)展庫(kù)來(lái)解析html代碼
    2013-04-04
  • Python數(shù)據(jù)可視化之畫(huà)圖

    Python數(shù)據(jù)可視化之畫(huà)圖

    今天小編就為大家分享一篇關(guān)于Python數(shù)據(jù)可視化之畫(huà)圖,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧
    2019-01-01
  • Python使用re模塊正則提取字符串中括號(hào)內(nèi)的內(nèi)容示例

    Python使用re模塊正則提取字符串中括號(hào)內(nèi)的內(nèi)容示例

    這篇文章主要介紹了Python使用re模塊正則提取字符串中括號(hào)內(nèi)的內(nèi)容,結(jié)合實(shí)例形式分析了Python使用re模塊進(jìn)行針對(duì)括號(hào)內(nèi)容的正則匹配操作,并簡(jiǎn)單解釋了相關(guān)修正符與正則語(yǔ)句的用法,需要的朋友可以參考下
    2018-06-06
  • 用python實(shí)現(xiàn)學(xué)生信息管理系統(tǒng)

    用python實(shí)現(xiàn)學(xué)生信息管理系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了用python實(shí)現(xiàn)學(xué)生信息管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-07-07
  • pycharm中cv2的package安裝失敗問(wèn)題及解決

    pycharm中cv2的package安裝失敗問(wèn)題及解決

    這篇文章主要介紹了pycharm中cv2的package安裝失敗問(wèn)題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-05-05
  • 詳解Python核心對(duì)象類型字符串

    詳解Python核心對(duì)象類型字符串

    本篇文章通過(guò)理論知識(shí)點(diǎn)給大家講述了Python核心對(duì)象類型字符串的相關(guān)知識(shí)內(nèi)容,對(duì)此有興趣的一起學(xué)習(xí)下。
    2018-02-02
  • Python 中最長(zhǎng)公共子序列的長(zhǎng)度

    Python 中最長(zhǎng)公共子序列的長(zhǎng)度

    子序列是在不改變剩余字符的順序的情況下,在刪除一些字符或不刪除任何字符后從給定序列獲得的序列,這篇文章主要介紹了Python 中的最長(zhǎng)公共子序列,需要的朋友可以參考下
    2023-06-06
  • pytorch?cuda安裝報(bào)錯(cuò)的解決方法

    pytorch?cuda安裝報(bào)錯(cuò)的解決方法

    這篇文章主要給大家介紹了關(guān)于pytorch?cuda安裝報(bào)錯(cuò)的解決方法,文中通過(guò)圖文介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Pytorch具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2023-01-01
  • python中subplot大小的設(shè)置步驟

    python中subplot大小的設(shè)置步驟

    matploglib能夠繪制出精美的圖表,有時(shí)候我們希望把一組圖放在一起進(jìn)行比較,就需要用到matplotlib中提供的subplot了,這篇文章主要給大家介紹了關(guān)于python中subplot大小的設(shè)置方法,需要的朋友可以參考下
    2021-06-06
  • 詳解python中sort排序使用

    詳解python中sort排序使用

    這篇文章主要介紹了python中sort排序使用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-03-03

最新評(píng)論