0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

python推導(dǎo)式是什么

python爬蟲知識分享 ? 來源:python爬蟲知識分享 ? 作者:python爬蟲知識分享 ? 2022-02-28 17:13 ? 次閱讀

python推導(dǎo)式

推導(dǎo)式(英文名:comprehensions),也叫解析式,是Python的一種獨(dú)有特性。

推導(dǎo)式是可以從一個(gè)數(shù)據(jù)序列構(gòu)建另一個(gè)新的數(shù)據(jù)序列的結(jié)構(gòu)體。

總共有四種推導(dǎo)式:

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

字典(dict)推導(dǎo)式

集合(set)推導(dǎo)式

生成器推導(dǎo)式

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

列表推導(dǎo)式的基本格式

new_list = [expression for_loop_expression if condition]

舉個(gè)例子。

我想找出一個(gè)數(shù)值列表中為偶數(shù)的元素,并組成新列表,通常不用列表推導(dǎo)式,可以這么寫

old_list = [0,1,2,3,4,5]

new_list = []
for item in old_list:
    if item % 2 == 0:
        new_list.append(item)

print(new_list) # output: [0, 2, 4]

一個(gè)簡單的功能,寫的代碼倒是不少。

如果使用了列表推導(dǎo)式,那就簡潔多了,而且代碼還變得更加易讀了。

>>> old_list = [0,1,2,3,4,5]
>>>
>>> new_list = [item for item in old_list if item % 2 == 0]
>>> print(new_list) # output: [0, 2, 4]
[0, 2, 4]

2. 字典推導(dǎo)式

字典推導(dǎo)式的基本格式,和 列表推導(dǎo)式相似,只是把 [] 改成了 {},并且組成元素有兩個(gè):key 和 value,要用 key_expr: value_expr 表示。

new_dict ={ key_expr: value_expr for_loop_expression if condition }

舉個(gè)例子。

我想從一個(gè)包含所有學(xué)生成績信息的字典中,找出數(shù)學(xué)考滿分的同學(xué)。

old_student_score_info = {
    "Jack": {
        "chinese": 87,
        "math": 92,
        "english": 78
    },
    "Tom": {
        "chinese": 92,
        "math": 100,
        "english": 89
    }
}

new_student_score_info = {name: scores for name, scores in old_student_score_info.items() if scores["math"] == 100}
print(new_student_score_info)
# output: {'Tom': {'chinese': 92, 'math': 100, 'english': 89}}

3. 集合推導(dǎo)式

集合推導(dǎo)式跟列表推導(dǎo)式也是類似的。 唯一的區(qū)別在于它使用大括號{},組成元素也只要一個(gè)。

基本格式

new_set = { expr for_loop_expression if condition }

舉個(gè)例子

我想把一個(gè)數(shù)值列表里的數(shù)進(jìn)行去重處理

>>> old_list = [0,0,0,1,2,3]
>>>
>>> new_set = {item for item in old_list}
>>> print(new_set)
{0, 1, 2, 3}

4. 生成器推導(dǎo)式

生成器推導(dǎo)式跟列表推導(dǎo)式,非常的像,只是把 [] 換成了 ()

列表推導(dǎo)式:生成的是新的列表

生成器推導(dǎo)式:生成的是一個(gè)生成器

直接上案例了,找出一個(gè)數(shù)值列表中所有的偶數(shù)

>>> old_list = [0,1,2,3,4,5]
>>> new_list = (item for item in old_list if item % 2 == 0)
>>> new_list
 at 0x10292df10>
>>> next(new_list)
0
>>> next(new_list)
2

5. 嵌套推導(dǎo)式

for 循環(huán)可以有兩層,甚至更多層,同樣的,上面所有的推導(dǎo)式,其實(shí)都可以寫成嵌套的多層推導(dǎo)式。

但建議最多嵌套兩層,最多的話,代碼就會(huì)變得非常難以理解。

舉個(gè)例子。

我想打印一個(gè)乘法表,使用兩個(gè)for可以這樣寫

for i in range(1, 10):
    for j in range(1, i+1):
        print('{}x{}={}\t'.format(j, i, i*j), end='')
    print("")

輸出如下

1x1=1
1x2=2   2x2=4
1x3=3   2x3=6   3x3=9
1x4=4   2x4=8   3x4=12  4x4=16
1x5=5   2x5=10  3x5=15  4x5=20  5x5=25
1x6=6   2x6=12  3x6=18  4x6=24  5x6=30  6x6=36
1x7=7   2x7=14  3x7=21  4x7=28  5x7=35  6x7=42  7x7=49
1x8=8   2x8=16  3x8=24  4x8=32  5x8=40  6x8=48  7x8=56  8x8=64
1x9=9   2x9=18  3x9=27  4x9=36  5x9=45  6x9=54  7x9=63  8x9=72  9x9=81

如果使用嵌套的列表推導(dǎo)式,可以這么寫

>>> print('\n'.join([' '.join(['%2d *%2d = %2d' % (col, row, col * row) for col in range(1, row + 1)]) for row in range(1, 10)]))
 1 * 1 =  1
 1 * 2 =  2  2 * 2 =  4
 1 * 3 =  3  2 * 3 =  6  3 * 3 =  9
 1 * 4 =  4  2 * 4 =  8  3 * 4 = 12  4 * 4 = 16
 1 * 5 =  5  2 * 5 = 10  3 * 5 = 15  4 * 5 = 20  5 * 5 = 25
 1 * 6 =  6  2 * 6 = 12  3 * 6 = 18  4 * 6 = 24  5 * 6 = 30  6 * 6 = 36
 1 * 7 =  7  2 * 7 = 14  3 * 7 = 21  4 * 7 = 28  5 * 7 = 35  6 * 7 = 42  7 * 7 = 49
 1 * 8 =  8  2 * 8 = 16  3 * 8 = 24  4 * 8 = 32  5 * 8 = 40  6 * 8 = 48  7 * 8 = 56  8 * 8 = 64
 1 * 9 =  9  2 * 9 = 18  3 * 9 = 27  4 * 9 = 36  5 * 9 = 45  6 * 9 = 54  7 * 9 = 63  8 * 9 = 72  9 * 9 = 81

審核編輯:符乾江
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 數(shù)據(jù)
    +關(guān)注

    關(guān)注

    8

    文章

    6817

    瀏覽量

    88743
  • python
    +關(guān)注

    關(guān)注

    55

    文章

    4768

    瀏覽量

    84376
收藏 人收藏

    評論

    相關(guān)推薦

    pytorch和python的關(guān)系是什么

    在當(dāng)今的人工智能領(lǐng)域,Python已經(jīng)成為了最受歡迎的編程語言之一。Python的易學(xué)易用、豐富的庫和框架以及強(qiáng)大的社區(qū)支持,使其成為了數(shù)據(jù)科學(xué)、機(jī)器學(xué)習(xí)和深度學(xué)習(xí)等領(lǐng)域的首選語言。而在深度學(xué)習(xí)領(lǐng)域
    的頭像 發(fā)表于 08-01 15:27 ?1504次閱讀

    python運(yùn)行環(huán)境的安裝和配置

    Python是一種非常流行的編程語言,廣泛應(yīng)用于科學(xué)計(jì)算、Web開發(fā)、人工智能等領(lǐng)域。為了能夠正常運(yùn)行Python程序,我們需要先安裝和配置Python運(yùn)行環(huán)境。本文將為您詳盡介紹Python
    的頭像 發(fā)表于 11-29 16:17 ?1082次閱讀

    python軟件對電腦配置要求

    Python是一種流行的編程語言,它在許多不同的領(lǐng)域中被廣泛使用,例如網(wǎng)站開發(fā)、數(shù)據(jù)科學(xué)和機(jī)器學(xué)習(xí)等。對于使用Python的開發(fā)者來說,了解Python軟件的電腦配置要求是非常重要的。本文將詳細(xì)介紹
    的頭像 發(fā)表于 11-29 14:58 ?9656次閱讀

    查看python安裝路徑的方法

    Python是一種高級編程語言,常用于開發(fā)Web應(yīng)用、數(shù)據(jù)分析、人工智能等領(lǐng)域。在使用Python進(jìn)行開發(fā)之前,我們需要先安裝Python解釋器,并了解Python解釋器的安裝路徑。本
    的頭像 發(fā)表于 11-29 14:54 ?1.1w次閱讀

    python安裝后idle在哪兒

    安裝即可。 在安裝 Python 后,您將獲得一個(gè)名為 IDLE(Python Shell)的集成開發(fā)環(huán)境(IDE)。IDLE 是專門為 Python 設(shè)計(jì)的一種輕量級的開發(fā)環(huán)境,它提供了一個(gè)交互
    的頭像 發(fā)表于 11-29 14:52 ?1131次閱讀

    python自帶的idle怎么進(jìn)入

    Python自帶的IDLE是一個(gè)集成開發(fā)環(huán)境(Integrated Development Environment),它通過提供編輯器和交互解釋器,使得Python的開發(fā)變得更加簡單和便捷。本文將
    的頭像 發(fā)表于 11-29 14:51 ?2145次閱讀

    python shell怎么用

    Python Shell是一種交互解釋器,可以通過命令行直接運(yùn)行Python代碼。在Shell中,可以輸入一行代碼并立即得到結(jié)果,非常適合于測試、嘗試新代碼或進(jìn)行簡單的任務(wù)。本文將詳細(xì)介紹
    的頭像 發(fā)表于 11-29 14:36 ?1064次閱讀

    python語言特點(diǎn)有哪些

    Python是一種高級編程語言,由Guido van Rossum于1991年首次發(fā)布。它具有許多獨(dú)特的特點(diǎn),這些特點(diǎn)使得Python在軟件開發(fā)領(lǐng)域變得非常流行。以下是關(guān)于Python語言的詳盡
    的頭像 發(fā)表于 11-29 14:29 ?1010次閱讀

    python軟件怎么運(yùn)行代碼

    Python是一種高級編程語言,它被廣泛用于開發(fā)各種類型的應(yīng)用程序,從簡單的腳本到復(fù)雜的網(wǎng)絡(luò)應(yīng)用和機(jī)器學(xué)習(xí)模型。要運(yùn)行Python代碼,您需要一個(gè)Python解釋器,它可以將您的代碼翻譯成計(jì)算機(jī)可以
    的頭像 發(fā)表于 11-28 16:02 ?843次閱讀

    如何運(yùn)行Python程序

    運(yùn)行Python程序非常簡單。Python是一種解釋型語言,這意味著可以直接通過解釋器來執(zhí)行代碼。下面我將詳細(xì)介紹如何運(yùn)行Python程序。 一、安裝Python 在運(yùn)行
    的頭像 發(fā)表于 11-24 09:31 ?1121次閱讀

    python怎么運(yùn)行程序

    Python是一種廣泛使用的編程語言,它的簡易和可讀性使得它成為初學(xué)者和專業(yè)開發(fā)人員的首選。在運(yùn)行Python程序之前,您需要安裝Python解釋器,然后按照以下步驟進(jìn)行操作。 步驟1:安裝
    的頭像 發(fā)表于 11-24 09:25 ?2464次閱讀

    Python2與Python3的差異

    Python2與Python3是兩個(gè)不同的版本,它們在語法、功能和性能等方面存在一些差異。下面是對Python2和Python3的詳盡、詳實(shí)、細(xì)致的比較,分為以下幾個(gè)方面: 語法差異:
    的頭像 發(fā)表于 11-23 16:48 ?872次閱讀

    Python自帶的命令窗口

    Python自帶的命令窗口,也稱為Python交互解釋器,是Python編程語言的一個(gè)重要工具,它允許用戶在命令行界面中輸入和執(zhí)行Python
    的頭像 發(fā)表于 11-22 14:02 ?859次閱讀

    python寫完程序之后怎么運(yùn)行

    Python是一門簡潔、易學(xué)的編程語言,被廣泛應(yīng)用于數(shù)據(jù)分析、人工智能等領(lǐng)域。在學(xué)習(xí)Python編程的過程中,了解程序的運(yùn)行機(jī)制是至關(guān)重要的。本文將詳盡解析Python程序的運(yùn)行過程,幫助讀者
    的頭像 發(fā)表于 11-22 11:10 ?949次閱讀

    python怎樣運(yùn)行代碼

    討論Python代碼的運(yùn)行方式,包括解釋器、交互環(huán)境和命令行。 Python代碼可以通過兩種主要的方式運(yùn)行:解釋執(zhí)行和編譯執(zhí)行。解釋執(zhí)行是指將源代碼逐行解釋為機(jī)器代碼并執(zhí)行,而編譯執(zhí)行是將源代碼轉(zhuǎn)換為機(jī)器代碼,然后再執(zhí)行。
    的頭像 發(fā)表于 11-22 10:31 ?1121次閱讀