国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Python 列表推導(dǎo)式:簡潔、高效的數(shù)據(jù)操作藝術(shù)

這篇具有很好參考價值的文章主要介紹了Python 列表推導(dǎo)式:簡潔、高效的數(shù)據(jù)操作藝術(shù)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

Python 列表推導(dǎo)式:簡潔、高效的數(shù)據(jù)操作藝術(shù)

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

1. 列表推導(dǎo)式:語法糖的力量

列表推導(dǎo)式,就是一種在 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. 過濾元素:帶條件的列表推導(dǎo)式

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

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. 復(fù)雜的數(shù)據(jù)結(jié)構(gòu):嵌套的列表推導(dǎo)式

更進一步,列表推導(dǎo)式還可以嵌套使用,處理更復(fù)雜的數(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ù)變形:帶表達式的列表推導(dǎo)式

列表推導(dǎo)式中的表達式可以幫助我們對數(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):字典和集合的推導(dǎo)式

推導(dǎo)式不僅僅可以應(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}

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

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

列表推導(dǎo)式不僅代碼更加簡潔,實際上在很多情況下,列表推導(dǎo)式的執(zhí)行效率也優(yōu)于傳統(tǒng)的 mapfilter 函數(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")

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

One More Thing

在我的 GitHub 學(xué)習(xí)過程以及在各種技術(shù)博客中閱讀,我發(fā)現(xiàn)一個關(guān)于列表推導(dǎo)式的有趣且實用的技巧,那就是使用列表推導(dǎo)式實現(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)]

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

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

如有幫助,請多關(guān)注
個人微信公眾號:【Python全視角】
TeahLead_KrisChang,10+年的互聯(lián)網(wǎng)和人工智能從業(yè)經(jīng)驗,10年+技術(shù)和業(yè)務(wù)團隊管理經(jīng)驗,同濟軟件工程本科,復(fù)旦工程管理碩士,阿里云認證云服務(wù)資深架構(gòu)師,上億營收AI產(chǎn)品業(yè)務(wù)負責(zé)人。文章來源地址http://www.zghlxwxcb.cn/news/detail-474537.html

到了這里,關(guān)于Python 列表推導(dǎo)式:簡潔、高效的數(shù)據(jù)操作藝術(shù)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • Python列表推導(dǎo)

    目錄 列表推導(dǎo)式 表達式是元組(例如上例的?(x,?y))時,必須加上括號: 列表推導(dǎo)式可以使用復(fù)雜的表達式和嵌套函數(shù): 嵌套的列表推導(dǎo)式 實際應(yīng)用中,最好用內(nèi)置函數(shù)替代復(fù)雜的流程語句。此時,zip()?函數(shù)更好用: 使用Python列表推到創(chuàng)建數(shù)據(jù)pytest驅(qū)動數(shù)據(jù) 列表推導(dǎo)式

    2024年02月07日
    瀏覽(14)
  • Python 中的列表推導(dǎo)式

    列表推導(dǎo)式是一種 Python 構(gòu)造,可減少生成新列表或過濾現(xiàn)有列表所需的代碼行。列表推導(dǎo)式包含在方括號內(nèi),它由一個表達式、一個或多個 for 循環(huán)和一個用于過濾生成的列表的可選條件組成。 列表推導(dǎo)式使用以下語法: 翻譯翻譯就是: 最原始的1到10 乘個2 只要偶數(shù) 來個

    2024年02月06日
    瀏覽(20)
  • Python——列表(list)推導(dǎo)式

    Python——列表(list)推導(dǎo)式

    本文基于python3。 你可以理解成一種數(shù)據(jù)的處理方式。目的是為了構(gòu)建一個新的數(shù)據(jù)序列。 Python 支持各種數(shù)據(jù)結(jié)構(gòu)的推導(dǎo)式: 列表(list)推導(dǎo)式 字典(dict)推導(dǎo)式 集合(set)推導(dǎo)式 元組(tuple)推導(dǎo)式 各自從字面意思就知道,創(chuàng)建一個列表、字典、集合、元組。 我們本文只看列表

    2024年02月11日
    瀏覽(16)
  • Python小姿勢 - Python中的列表推導(dǎo)式

    Python小姿勢 - Python中的列表推導(dǎo)式

    Python中的列表推導(dǎo)式 Python中的列表推導(dǎo)式是一種很好的創(chuàng)建列表的方式。它允許你將一個操作應(yīng)用于列表中的每個元素,并將結(jié)果放入一個新的列表中。 例如,假設(shè)你有一個包含數(shù)字的列表,但是你想將每個數(shù)字都乘以2,并將結(jié)果放入一個新的列表中。你可以使用以下代碼

    2024年02月04日
    瀏覽(27)
  • Django ORM:數(shù)據(jù)庫操作的Python化藝術(shù)

    Django ORM:數(shù)據(jù)庫操作的Python化藝術(shù)

    Django的對象關(guān)系映射器(ORM)是其核心功能之一,允許開發(fā)者使用Python代碼來定義、操作和查詢數(shù)據(jù)庫。這篇文章將帶你深入了解Django ORM的強大之處,從基本概念到高級查詢技巧,提供豐富的示例幫助你掌握使用Django ORM進行有效和高效的數(shù)據(jù)庫操作。 Django ORM的目的是提供一

    2024年02月04日
    瀏覽(33)
  • python經(jīng)典有序序列的list列表推導(dǎo)式

    生成一個數(shù)據(jù)列表 使用列表推導(dǎo)式生成該數(shù)據(jù)列表 分析: 1、使用一行代碼的列表推導(dǎo)式就完成了該列表的生成 2、[i for i in range(20)],第一個i元素代表向列表list_2中添加的元素 3、[i for i in range(20)],第二個i元素代表for循環(huán)遍歷的i元素 使用列表推導(dǎo)式生成只有偶數(shù)的數(shù)據(jù)列

    2024年02月02日
    瀏覽(23)
  • Python 列表推導(dǎo)式(List Comprehension)的使用

    樣例代碼: 輸出如下: 源碼解釋: 在給定函數(shù) func(g, arr) 中,表達式 [g(x) for x in arr] 是列表推導(dǎo)式(List Comprehension)的一種寫法。它的作用是將函數(shù) g 應(yīng)用于列表 arr 中的每個元素 x ,并將結(jié)果存儲在一個新的列表中。 解釋 [g(x) for x in arr] 的過程如下: 對于列表 arr 中的每

    2024年02月12日
    瀏覽(14)
  • Python中的三元運算符:簡潔高效的條件表達式

    什么是三元運算符 三元運算符是一種簡潔高效的條件表達式,用于根據(jù)條件的真假來返回不同的值。它是一種特殊的運算符,由三個操作數(shù)組成,形式為 [結(jié)果為真的值] if [條件] else [結(jié)果為假的值] 。 Python中的三元運算符語法 Python中的三元運算符的語法如下: 三元運算符的

    2024年01月19日
    瀏覽(21)
  • python 列表推導(dǎo)同filter和map的比較

    filter 和 map 合起來能做的事情,列表推導(dǎo)也可以做,而且還不需要借助難以理解和閱讀的 lambda 表達式。 我原以為 map/filter 組合起來用要比列表推導(dǎo)快一些,Alex Martelli 卻說不一定——至少在上面這個例子中不一定。在本書的代碼倉庫(https://github.com/fluentpython/examplecode)中有

    2024年01月18日
    瀏覽(17)
  • 5、Python循環(huán)及列表推導(dǎo)式(List Comprehension)

    For 和 while 循環(huán)以及 Python最重要的功能:列表推導(dǎo)式(List Comprehension) 循環(huán)是重復(fù)執(zhí)行某些代碼的一種方式: In [1]: for 循環(huán)指定了以下內(nèi)容: 要使用的變量名(在這種情況下是 planet ) 要循環(huán)遍歷的值集合(在這種情況下是 planets ) 你使用 “ in ” 連接它們。 “ in ” 右邊

    2024年01月19日
    瀏覽(24)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包