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

python實(shí)現(xiàn)列表推導(dǎo)式與生成器

 更新時(shí)間:2024年09月15日 08:51:34   作者:愛(ài)技術(shù)的小伙子  
列表推導(dǎo)式和生成器都是Python中處理集合的強(qiáng)大工具,列表推導(dǎo)式用于快速生成列表,而生成器表達(dá)式則提供了一種節(jié)約內(nèi)存的方式來(lái)處理大型數(shù)據(jù)集,下面就來(lái)介紹一下python實(shí)現(xiàn)列表推導(dǎo)式與生成器,感興趣的可以了解一下

列表推導(dǎo)式和生成器是 Python 中的兩個(gè)非常有用的工具。它們可以幫助你以簡(jiǎn)潔和高效的方式創(chuàng)建和處理數(shù)據(jù)集合。了解它們的用法不僅可以讓代碼更加簡(jiǎn)潔,還能提升代碼的執(zhí)行效率。

1. 列表推導(dǎo)式

列表推導(dǎo)式(List Comprehension)是一種簡(jiǎn)潔的創(chuàng)建列表的方式。通過(guò)它,能夠用一行代碼生成列表,而不需要像傳統(tǒng)方式那樣使用循環(huán)。

1.1 基本語(yǔ)法

new_list = [expression for item in iterable if condition]
  • expression:在每個(gè)元素上執(zhí)行的操作,結(jié)果會(huì)存入新的列表。
  • item:從可迭代對(duì)象中獲取的元素。
  • iterable:可以是列表、元組、集合、字符串等任何可迭代對(duì)象。
  • condition(可選):對(duì)元素進(jìn)行篩選,只有滿(mǎn)足條件的元素才會(huì)被添加到新的列表中。

1.2 示例

創(chuàng)建一個(gè)包含1到10平方值的列表:

squares = [x**2 for x in range(1, 11)]
print(squares)  # 輸出:[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

帶條件的列表推導(dǎo)式:

只保留偶數(shù)的平方:

even_squares = [x**2 for x in range(1, 11) if x % 2 == 0]
print(even_squares)  # 輸出:[4, 16, 36, 64, 100]

使用多個(gè)循環(huán)的列表推導(dǎo)式:

創(chuàng)建一個(gè)包含(1, 2), (1, 3), (2, 2), (2, 3)的列表:

pairs = [(x, y) for x in range(1, 3) for y in range(2, 4)]
print(pairs)  # 輸出:[(1, 2), (1, 3), (2, 2), (2, 3)]

2. 生成器表達(dá)式

生成器表達(dá)式(Generator Expression)與列表推導(dǎo)式非常相似,但不同的是,生成器表達(dá)式不會(huì)一次性將所有結(jié)果存儲(chǔ)在內(nèi)存中,而是每次迭代時(shí)動(dòng)態(tài)生成數(shù)據(jù)。這使得生成器在處理大量數(shù)據(jù)時(shí)比列表推導(dǎo)式更高效。

2.1 基本語(yǔ)法

generator = (expression for item in iterable if condition)

生成器表達(dá)式的語(yǔ)法與列表推導(dǎo)式幾乎相同,只是使用了圓括號(hào)而不是方括號(hào)。

2.2 示例

生成一個(gè)生成器表達(dá)式:

gen = (x**2 for x in range(1, 11))
print(gen)  # 輸出:<generator object <genexpr> at 0x...>

要獲取生成器中的元素,可以使用 next() 函數(shù)或?qū)⑵滢D(zhuǎn)為列表:

print(next(gen))  # 輸出:1
print(next(gen))  # 輸出:4

將生成器轉(zhuǎn)為列表:

gen_list = list(gen)
print(gen_list)  # 輸出:[9, 16, 25, 36, 49, 64, 81, 100]

2.3 生成器的優(yōu)勢(shì)

生成器的主要優(yōu)勢(shì)在于它節(jié)省內(nèi)存。生成器一次只生成一個(gè)值,而不是像列表那樣一次性將所有元素加載到內(nèi)存中。因此,生成器在處理非常大的數(shù)據(jù)集時(shí)非常有用。

例如:生成前 100 萬(wàn)個(gè)數(shù)字的平方

使用生成器:

large_gen = (x**2 for x in range(1, 1000001))
print(next(large_gen))  # 輸出:1

與列表推導(dǎo)式相比,生成器幾乎不占用額外內(nèi)存,而列表推導(dǎo)式會(huì)創(chuàng)建一個(gè) 100 萬(wàn)元素的列表。

3. 列表推導(dǎo)式 vs 生成器表達(dá)式

特性列表推導(dǎo)式生成器表達(dá)式
括號(hào)方括號(hào) []圓括號(hào) ()
返回類(lèi)型列表生成器
內(nèi)存消耗會(huì)一次性加載所有元素到內(nèi)存中每次迭代動(dòng)態(tài)生成,內(nèi)存占用小
適用場(chǎng)景適合處理較小的數(shù)據(jù)集適合處理大數(shù)據(jù)集或惰性計(jì)算
可修改性生成的列表可以修改生成器是只讀的,不能修改

4. 小結(jié)

  • 列表推導(dǎo)式:用于創(chuàng)建新的列表,寫(xiě)法簡(jiǎn)潔、執(zhí)行快速,適用于需要返回完整列表的場(chǎng)景。
  • 生成器表達(dá)式:用于創(chuàng)建生成器,節(jié)省內(nèi)存,適合處理大數(shù)據(jù)集或惰性計(jì)算的場(chǎng)景。

掌握列表推導(dǎo)式與生成器,不僅可以讓代碼更加簡(jiǎn)潔易讀,還能有效提升代碼性能,在不同的應(yīng)用場(chǎng)景中選擇合適的工具將大大提高代碼效率。

到此這篇關(guān)于python實(shí)現(xiàn)列表推導(dǎo)式與生成器的文章就介紹到這了,更多相關(guān)python 列表推導(dǎo)式與生成器內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 在Django中使用Sitemap的方法講解

    在Django中使用Sitemap的方法講解

    這篇文章主要介紹了在Django中使用Sitemap的方法講解,Django是最具人氣的Python web開(kāi)發(fā)框架,需要的朋友可以參考下
    2015-07-07
  • python批量修改文件名的實(shí)現(xiàn)代碼

    python批量修改文件名的實(shí)現(xiàn)代碼

    這篇文章主要介紹了python批量修改文件名的實(shí)現(xiàn)代碼,需要的朋友可以參考下
    2014-09-09
  • PyCharm 2020 激活到 2100 年的教程

    PyCharm 2020 激活到 2100 年的教程

    這篇文章主要介紹了PyCharm 2020 激活到 2100 年,本文圖文并茂給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-03-03
  • django+js+ajax實(shí)現(xiàn)刷新頁(yè)面的方法

    django+js+ajax實(shí)現(xiàn)刷新頁(yè)面的方法

    這篇文章主要介紹了django+js+ajax實(shí)現(xiàn)刷新頁(yè)面的方法,結(jié)合實(shí)例形式分析了django實(shí)現(xiàn)ajax刷新頁(yè)面功能的具體步驟與相關(guān)操作技巧,需要的朋友可以參考下
    2017-05-05
  • python進(jìn)度條tqdm使用方式

    python進(jìn)度條tqdm使用方式

    這篇文章主要介紹了python進(jìn)度條tqdm使用方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-02-02
  • 使用Python批量處理Excel文件并轉(zhuǎn)為csv文件示例

    使用Python批量處理Excel文件并轉(zhuǎn)為csv文件示例

    這篇文章主要介紹了使用Python批量處理Excel文件并轉(zhuǎn)為csv文件示例,文中通過(guò)代碼示例給大家介紹非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下
    2023-12-12
  • Python使用atexit模塊實(shí)現(xiàn)Golang的defer功能

    Python使用atexit模塊實(shí)現(xiàn)Golang的defer功能

    這篇文章主要為大家詳細(xì)介紹了Python如何使用atexit模塊實(shí)現(xiàn)Golang的defer功能,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2024-04-04
  • python tkinter基本屬性詳解

    python tkinter基本屬性詳解

    這篇文章主要介紹了python tkinter基本屬性詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-09-09
  • Python初學(xué)者必須掌握的25個(gè)內(nèi)置函數(shù)詳解

    Python初學(xué)者必須掌握的25個(gè)內(nèi)置函數(shù)詳解

    這篇文章主要介紹了Python25個(gè)常用內(nèi)置函數(shù)總結(jié),本文羅列了數(shù)學(xué)相關(guān) 、功能相關(guān)、類(lèi)型轉(zhuǎn)換、字符串處理、序列處理函數(shù)等常用內(nèi)置函數(shù),需要的朋友可以參考下
    2021-09-09
  • Mac OS X10.9安裝的Python2.7升級(jí)Python3.3步驟詳解

    Mac OS X10.9安裝的Python2.7升級(jí)Python3.3步驟詳解

    Mac OS X10.9默認(rèn)帶了Python2.7,不過(guò)現(xiàn)在Python3.3.3出來(lái)了,如果想使用最新版本,趕緊升級(jí)下吧?;静襟E如下
    2013-12-12

最新評(píng)論

珲春市| 交城县| 南和县| 上蔡县| 都江堰市| 娄烦县| 克山县| 恩施市| 衢州市| 莲花县| 胶州市| 荆州市| 新兴县| 嘉善县| 松原市| 亚东县| 平利县| 永川市| 瑞金市| 舟山市| 嵩明县| 南通市| 昭觉县| 句容市| 府谷县| 饶平县| 丰宁| 合阳县| 咸宁市| 沧州市| 即墨市| 类乌齐县| 邻水| 崇义县| 萨嘎县| 乾安县| 樟树市| 申扎县| 盘山县| 东平县| 桐柏县|