最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

一文帶你了解Python列表生成式應用的八重境界

 更新時間:2022年09月02日 09:00:17   作者:趙卓不凡  
在Python中有非常多且好用的技巧,其中使用最多的是列表生成式,往往可以將復雜的邏輯用簡單的語言來實現,本文重點介紹列表生成式應用的八重境界

1. 引言

在Python中有非常多且好用的技巧,其中使用最多的是列表生成式,往往可以將復雜的邏輯用簡單的語言來實現,本文重點介紹列表生成式應用的八重境界。
閑話少說,我們直接開始吧!

2. Level1: 基礎用法

最最簡單的列表生成式,舉例如下:

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

上述代碼實現了對列表中單個元素求平方的操作。

3. Level2: 加入條件語句

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

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

上述代碼中,我們添加了一個條件來決定在列表生成式中應該保留哪些元素。這里我們的條件是,如果n<4,則只保留小于4的數。

4. Level3: 加入 enumerate()

我們知道,枚舉函數enumerate()可以同時生成元素以及相應的元素的索引。如果我們需要元素的索引以及元素,我們可以在列表生成式中使用函數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()

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

在列表生成式中加入函數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: 加入三目運算符

三元運算符A if condition else B允許我們根據條件將每個元素轉換為其他元素。

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

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)

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

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]

實質上,上述實現等價代碼如下:

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

8. Level7: 嵌套列表生成式

更高級一點,我們可以在列表生成式中嵌套列表生成式,舉例如下:

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: 合并上述所有技巧

最后的最后,讓我們將上述介紹的幾個技巧進行合并,我們來看如下例子:

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]]

上述實現意義不大,我們嘗試應用上了上面介紹的所有技巧,但是畢竟代碼可讀性太大。其主要目的還是為了說明我們可以結合多種技巧,來使我們的列表生成式實現更加強大的功能。

10. 應用栗子

好吧,我們來看個實際的應用例子吧!

假設我們班級上有如下同學信息:

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]),
]

上述列表展示了每個學生的姓名、性別和考試成績,這里假設如果一個學生的平均分數≥ 50,那么這個學生有資格獲獎。這里我們需要編寫代碼,來找到上述列表中有資格獲獎的男生。

樣例代碼如下:

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. 總結

本文重點介紹了理解Python中的列表生成式的八重境界,并給出了相應的代碼示例。

以上就是一文帶你了解Python列表生成式應用的八重境界的詳細內容,更多關于Python列表生成式的資料請關注腳本之家其它相關文章!

相關文章

  • Django url反向解析的實現

    Django url反向解析的實現

    本文主要介紹了Django url反向解析的實現,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-12-12
  • Django與FastAPI的選擇區(qū)別深入剖析

    Django與FastAPI的選擇區(qū)別深入剖析

    這篇文章主要為大家介紹了Django與FastAPI的選擇區(qū)別深入剖析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-12-12
  • Python Flask框架開發(fā)之運用SocketIO實現WebSSH方法詳解

    Python Flask框架開發(fā)之運用SocketIO實現WebSSH方法詳解

    Socket.IO本是一個面向實時web應用的JavaScript庫,現在已成為擁有眾多語言支持的Web即時通訊應用的框架。這篇文章主要介紹了Python 運用SocketIO實現WebSSH方法
    2022-10-10
  • python在指定位置插入字符的實現

    python在指定位置插入字符的實現

    本文主要介紹了python在指定位置插入字符的實現,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-04-04
  • django中使用Celery 布式任務隊列過程詳解

    django中使用Celery 布式任務隊列過程詳解

    這篇文章主要介紹了django中使用Celery 布式任務隊列實現過程詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-07-07
  • Python實現Excel做表自動化的最全方法合集

    Python實現Excel做表自動化的最全方法合集

    Microsoft?Excel?是一款強大的辦公工具,廣泛用于數據分析、報告制作、預算管理等各種任務,本文將深入探討如何使用?Python?進行?Excel?表格的自動化,需要的可以參考下
    2024-02-02
  • Python正則表達式如何進行字符串替換實例

    Python正則表達式如何進行字符串替換實例

    Python正則表達式在使用中會經常應用到字符串替換的代碼。這篇文章主要介紹了Python正則表達式如何進行字符串替換,具有一定的參考價值,感興趣的小伙伴們可以參考一下。
    2016-12-12
  • PyTorch搭建一維線性回歸模型(二)

    PyTorch搭建一維線性回歸模型(二)

    這篇文章主要為大家詳細介紹了PyTorch搭建一維線性回歸模型,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-05-05
  • pandas按某2列進行分層隨機抽樣的實現

    pandas按某2列進行分層隨機抽樣的實現

    本文主要介紹了pandas按某2列進行分層隨機抽樣的實現,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2024-12-12
  • Python命令行參數解析之argparse模塊詳解

    Python命令行參數解析之argparse模塊詳解

    這篇文章主要介紹了Python命令行參數解析之argparse模塊詳解,argparse?是?Python?的一個標準庫,用于命令行參數的解析,這意味著我們無需在代碼中手動為變量賦值,而是可以直接在命令行中向程序傳遞相應的參數,再由變量去讀取這些參數,需要的朋友可以參考下
    2023-08-08

最新評論

宾川县| 吉安市| 长白| 凤山市| 泰和县| 三穗县| 石柱| 榆树市| 河南省| 邻水| 邯郸市| 泰来县| 桓台县| 佛冈县| 保靖县| 麟游县| 灯塔市| 长治市| 大港区| 呼和浩特市| 行唐县| 延边| 波密县| 丰原市| 北川| 贵南县| 汉寿县| 乌拉特前旗| 江阴市| 鄂托克旗| 新绛县| 满城县| 中宁县| 平舆县| 南皮县| 喜德县| 新巴尔虎右旗| 临沂市| 潜山县| 且末县| 漠河县|