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

Python列表推導式的基本操作詳解

 更新時間:2023年06月08日 08:59:13   作者:cy_x  
Python?的列表推導式,這個看似簡單的語法糖,實則內(nèi)含無限威力,本文將從基礎(chǔ)的概念認識,到各類進階的用法和操作,更深入地探討列表推導式,希望對大家有所幫助

Python 的列表推導式,這個看似簡單的語法糖,實則內(nèi)含無限威力。在 Python 代碼編寫中,列表推導式的靈活性和簡潔性讓它成為了不可或缺的一部分。在這篇文章中,我們將更全面、更深入地探討列表推導式,從基礎(chǔ)的概念認識,到各類進階的用法和操作,我們一一揭秘。最后,我們還將在 "One More Thing" 部分分享一個非常有趣且實用的列表推導式技巧,這會讓你在編程道路上又多一份強大的工具。

1. 列表推導式:語法糖的力量

列表推導式,就是一種在 Python 中創(chuàng)建列表的方式,它的基礎(chǔ)形式如下:

[expression for item in iterable]

它實質(zhì)上是一個 for 循環(huán)的簡化形式。例如,我們可以用它來創(chuàng)建一個包含 0 到 9 平方的列表:

squares = [x**2 for x in range(10)]
print(squares) # Output: [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]

這樣,你不需要再使用傳統(tǒng)的 for 循環(huán)來創(chuàng)建列表,代碼更加簡潔和清晰。

2. 過濾元素:帶條件的列表推導式

列表推導式更強大的地方在于,我們可以在其中加入條件判斷,以過濾出我們想要的元素:

even_squares = [x**2 for x in range(10) if x % 2 == 0]
print(even_squares) # Output: [0, 4, 16, 36, 64]

在這個例子中,我們只生成了偶數(shù)的平方,只需加入一個簡單的 if 條件,我們就可以靈活地過濾出我們需要的元素。

3. 復雜的數(shù)據(jù)結(jié)構(gòu):嵌套的列表推導式

更進一步,列表推導式還可以嵌套使用,處理更復雜的數(shù)據(jù)結(jié)構(gòu),比如我們要將一個嵌套列表展平:

nested_list = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
flattened_list = [x for sublist in nested_list for x in sublist]
print(flattened_list) # Output: [1, 2, 3, 4, 5, 6, 7, 8, 9]

這個例子中,我們將一個二維的嵌套列表展平成了一維列表,就像是將多層次的數(shù)據(jù)展開,方便我們進行后續(xù)處理。

4. 數(shù)據(jù)變形:帶表達式的列表推導式

列表推導式中的表達式可以幫助我們對數(shù)據(jù)進行變形:

strings = ['Hello', 'World', 'In', 'Python']
lowercase_strings = [s.lower() for s in strings]
print(lowercase_strings) # Output: ['hello', 'world', 'in', 'python']

在這個例子中,我們將一個包含幾個字符串的列表,通過 str.lower() 函數(shù),將其轉(zhuǎn)換成了全小寫。通過改變表達式,我們可以在生成新列表的同時,對數(shù)據(jù)進行各種變形操作。

5. 推廣至其他數(shù)據(jù)結(jié)構(gòu):字典和集合的推導式

推導式不僅僅可以應(yīng)用于列表,還可以推廣到字典和集合中:

squared_dict = {x: x**2 for x in range(5)}
print(squared_dict) # Output: {0: 0, 1: 1, 2: 4, 3: 9, 4: 16}

squared_set = {x**2 for x in range(5)}
print(squared_set) # Output: {0, 1, 4, 16, 9}

這兩個例子分別演示了字典推導式和集合推導式的用法,這些結(jié)構(gòu)的推導式可以更方便我們處理復雜的數(shù)據(jù)結(jié)構(gòu)。

6. 性能優(yōu)化:列表推導式與 map/filter 的比較

列表推導式不僅代碼更加簡潔,實際上在很多情況下,列表推導式的執(zhí)行效率也優(yōu)于傳統(tǒng)的 map 或 filter 函數(shù):

import time

# Using list comprehension
start_time = time.time()
squares = [x**2 for x in range(1000000)]
end_time = time.time()
print(f"List comprehension took {end_time - start_time} seconds")

# Using map function
start_time = time.time()
squares = list(map(lambda x: x**2, range(1000000)))
end_time = time.time()
print(f"Map function took {end_time - start_time} seconds")

在這個例子中,我們分別用列表推導式和 map 函數(shù)創(chuàng)建一個包含一百萬個元素的列表,可以看到列表推導式的執(zhí)行時間通常要少于 map 函數(shù)。

One More Thing

在我的 GitHub 學習過程以及在各種技術(shù)博客中閱讀,我發(fā)現(xiàn)一個關(guān)于列表推導式的有趣且實用的技巧,那就是使用列表推導式實現(xiàn)全排列:

perms = [(x, y, z) for x in range(3) for y in range(3) for z in range(3) if x != y and y != z and x != z]
print(perms) # Output: [(0, 1, 2), (0, 2, 1), (1, 0, 2), (1, 2, 0), (2, 0, 1), (2, 1, 0)]

這個例子通過列表推導式生成了 3 個元素的全排列,使用了嵌套循環(huán)和條件判斷,非常簡潔而高效。

總的來說,Python 的列表推導式是一個非常強大而靈活的工具,能夠幫助我們更好地處理數(shù)據(jù)和創(chuàng)建數(shù)據(jù)結(jié)構(gòu)。希望這篇文章能幫助你更深入地理解和應(yīng)用列表推導式,讓你的 Python 代碼更加簡潔和高效。

到此這篇關(guān)于Python列表推導式的基本操作詳解的文章就介紹到這了,更多相關(guān)Python列表推導式內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • python unichr函數(shù)知識點總結(jié)

    python unichr函數(shù)知識點總結(jié)

    在本篇文章里小編給大家整理的是一篇關(guān)于python unichr函數(shù)的知識點總結(jié)內(nèi)容,有興趣的朋友們可以學習下。
    2020-12-12
  • python3.5安裝python3-tk詳解

    python3.5安裝python3-tk詳解

    這篇文章主要介紹了python3.5安裝python3-tk詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-04-04
  • python實現(xiàn)鬧鐘定時播放音樂功能

    python實現(xiàn)鬧鐘定時播放音樂功能

    這篇文章主要為大家詳細介紹了python實現(xiàn)鬧鐘定時播放音樂功能,播放wav格式的音頻,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-01-01
  • 利用Python如何畫一顆心、小人發(fā)射愛心

    利用Python如何畫一顆心、小人發(fā)射愛心

    這篇文章主要給大家介紹了關(guān)于利用Python如何畫一顆心、小人發(fā)射愛心的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-02-02
  • Python CSV文件模塊的使用案例分析

    Python CSV文件模塊的使用案例分析

    這篇文章主要介紹了Python CSV文件模塊的使用,結(jié)合具體案例形式分析了Python使用csv模塊操作csv文件的相關(guān)使用技巧與相關(guān)注意事項,需要的朋友可以參考下
    2019-12-12
  • python機器學習Sklearn實戰(zhàn)adaboost算法示例詳解

    python機器學習Sklearn實戰(zhàn)adaboost算法示例詳解

    這篇文章主要為大家介紹了python機器學習Sklearn實戰(zhàn)adaboost算法的示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步早日升職加薪
    2021-11-11
  • Python推導式數(shù)據(jù)處理方式

    Python推導式數(shù)據(jù)處理方式

    這篇文章主要介紹了Python推導式數(shù)據(jù)處理方式,文章圍繞主題展開詳細的內(nèi)容介紹,具有一定的參考價值,需要的朋友可以參考一下
    2022-07-07
  • 利用django和mysql實現(xiàn)一個簡單的web登錄頁面

    利用django和mysql實現(xiàn)一個簡單的web登錄頁面

    這篇文章主要給大家介紹了關(guān)于如何利用django和mysql實現(xiàn)一個簡單的web登錄頁面的相關(guān)資料,文中通過圖文以及實例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2023-05-05
  • Python制作一個隨機抽獎小工具的實現(xiàn)

    Python制作一個隨機抽獎小工具的實現(xiàn)

    最近在工作中面向社群玩家組織了一場活動,需要進行隨機抽獎,就做了一個簡單的隨機抽獎小工具。具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-07-07
  • Anaconda+VSCode配置tensorflow開發(fā)環(huán)境的教程詳解

    Anaconda+VSCode配置tensorflow開發(fā)環(huán)境的教程詳解

    Anaconda是一個開源的python發(fā)行版本,是現(xiàn)在比較流行的python數(shù)據(jù)科學平臺,可以對python的科學包做到有效管理。這篇文章主要介紹了Anaconda+VSCode配置tensorflow開發(fā)環(huán)境,需要的朋友可以參考下
    2020-03-03

最新評論