日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > python >内容正文

python

【Python基础】Python列表生成式

發(fā)布時間:2025/3/12 python 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【Python基础】Python列表生成式 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

作者 | Soner Y?ld?r?m

編譯? |VK
來源 | Towards Data Science

列表生成式是一種基于其他iterable(如集合、元組、其他列表等)創(chuàng)建列表的方法。它還可以用更簡單、更吸引人的語法表示for和if循環(huán)。不過,列表生成式比for循環(huán)要快得多。

列表生成式的基本結(jié)構(gòu)如下。

這看起來很簡單,但在某些情況下可能會變得棘手。在本文中,我們將從一個非常簡單的列表生成式開始,并逐步增加復(fù)雜性。我將清楚地解釋如何表示和生成式高度復(fù)雜的列表生成式。

在大多數(shù)情況下,列表生成式優(yōu)先于for和if循環(huán),因為

  • 它們比for循環(huán)快得多。

  • 它們被認(rèn)為比循環(huán)和映射函數(shù)更具python特性。

  • 列表生成式的語法更容易閱讀。


讓我們從一個簡單的例子開始。

words?=?['data','science','machine','learning']

我們要創(chuàng)建一個列表,其中包含單詞列表中每個單詞的長度。讓我們使用for循環(huán)和列表生成式來執(zhí)行任務(wù)。

#?for循環(huán) a?=?[] for?word?in?words:a.append(len(word))#?列表生成式 b?=?[len(word)?for?word?in?words]print(f"a?is?{a}") print(f"b?is?{b}")a?is?[4,?7,?7,?8] b?is?[4,?7,?7,?8]

生成式列表語法的最佳方法是比較for和if循環(huán)。下圖演示了比較。

for循環(huán)末尾的表達(dá)式放在列表的開頭。

當(dāng)我們復(fù)習(xí)這些例子時,會更清楚。讓我們創(chuàng)建一個列表,其中包含單詞列表中長度大于5的項。

#?for循環(huán) a?=?[] for?word?in?words:if?len(word)?>?5:a.append(word)#?列表生成式 b?=?[word?for?word?in?words?if?len(word)?>?5]print(f"a?is?{a}") print(f"b?is?{b}")a?is?['science',?'machine',?'learning'] b?is?['science',?'machine',?'learning']

下圖顯示了如何在列表中表示循環(huán)中的表達(dá)式。

與上一個示例一樣,在for循環(huán)末尾所做的事情被放在列表的開頭。在這種情況下,我們按原樣處理項。列表生成式的下一部分是循環(huán)中的第一個表達(dá)式,然后是循環(huán)中的第二個表達(dá)式。

循環(huán)中的邏輯更直觀。因此,與循環(huán)相比,列表生成式的結(jié)構(gòu)相對容易掌握。過一段時間,你就不必做一個明確的比較,因為你的大腦已經(jīng)習(xí)慣了。

下一個例子稍微復(fù)雜一些。我們要創(chuàng)建一個包含單詞列表項中所有“a”、“e”和“i”字母的列表。此任務(wù)涉及嵌套的for和if循環(huán)。

#?for循環(huán) a?=?[] for?word?in?words:for?letter?in?word:if?letter?in?["a","e","i"]:a.append(letter)

讓我們詳細(xì)說明一下語法。我們反復(fù)瀏覽單詞表。對于每個項,我們遍歷字符。如果一個字符符合給定的條件,它將被附加到列表a中。

完成相同任務(wù)的列表生成式如下。

b?=?[letter?for?word?in?words?for?letter?in?word?if?letter?in?["a","e","i"]]

我們從for循環(huán)中的最后一個表達(dá)式開始生成式列表。剩下的部分從循環(huán)的開頭開始。下圖說明了每個步驟。



結(jié)論

列表生成式是一種高效的操作。對于簡單的任務(wù),生成式的語法很容易,在復(fù)雜的情況下可能會變得棘手。

如果你很難創(chuàng)建或生成式復(fù)雜的列表生成式,請嘗試使用循環(huán)編寫。

需要注意的是,列表生成式并不總是最佳選擇。它們將整個輸出列表加載到內(nèi)存中。這對于中小型列表是可以接受的,甚至是可取的,因為它使操作更快。

然而,當(dāng)我們處理大型列表(例如10億個元素)時,應(yīng)該避免列表生成式。它可能會導(dǎo)致你的計算機崩潰,由于內(nèi)存需求量過大。

對于這樣大的列表,一個更好的選擇是使用一個生成器,它實際上不會在內(nèi)存中創(chuàng)建一個大的數(shù)據(jù)結(jié)構(gòu)。生成器在使用項時創(chuàng)建它們。用完后,生成器會將它們?nèi)拥簟I善鞑粫?dǎo)致內(nèi)存問題,但它們比列表生成式相對較慢。

謝謝你的閱讀。

往期精彩回顧適合初學(xué)者入門人工智能的路線及資料下載機器學(xué)習(xí)及深度學(xué)習(xí)筆記等資料打印機器學(xué)習(xí)在線手冊深度學(xué)習(xí)筆記專輯《統(tǒng)計學(xué)習(xí)方法》的代碼復(fù)現(xiàn)專輯 AI基礎(chǔ)下載機器學(xué)習(xí)的數(shù)學(xué)基礎(chǔ)專輯溫州大學(xué)《機器學(xué)習(xí)課程》視頻 本站qq群851320808,加入微信群請掃碼:

總結(jié)

以上是生活随笔為你收集整理的【Python基础】Python列表生成式的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。