第5章:python推導(dǎo)式

Python 推導(dǎo)式是一種獨(dú)特的數(shù)據(jù)處理方式,可以從一個(gè)數(shù)據(jù)序列構(gòu)建另一個(gè)新的數(shù)據(jù)序列的結(jié)構(gòu)體。

Python 支持各種數(shù)據(jù)結(jié)構(gòu)的推導(dǎo)式:

  • 1)列表(list)推導(dǎo)式
  • 2)字典(dict)推導(dǎo)式
  • 3)集合(set)推導(dǎo)式
  • 4)元組(tuple)推導(dǎo)式
    推導(dǎo)式可以利用 range 區(qū)間、元組、列表、字典和集合等數(shù)據(jù)類型,快速生成一個(gè)滿足指定需求的列表/字典/集合/元組。

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

列表推導(dǎo)式格式為:

[表達(dá)式 for 變量 in 列表]
[expression for item in Sequence ]
或者
[表達(dá)式 for 變量 in 列表 if 條件]
[expression for item in Sequence if condition]

  • expression:列表生成元素表達(dá)式,可以是有返回值的函數(shù)。
  • for item in Sequence:迭代 Sequence 將 item 傳入到 expression 表達(dá)式中。
  • if condition:條件語(yǔ)句,可以過(guò)濾列表中不符合條件的值。

示例1:將列表names的字符串,轉(zhuǎn)換成大寫字母

>>> names = ['Bob','Tom','alice','Jerry','Wendy','Smith']
>>> new_names = [name.upper() for name in names]
>>> new_names
['BOB', 'TOM', 'ALICE', 'JERRY', 'WENDY', 'SMITH']

示例2:計(jì)算 30 以內(nèi)可以被 3 整除的整數(shù):

>>> ans = [x for x in range(30) if x%3==0]
>>> ans
[0, 3, 6, 9, 12, 15, 18, 21, 24, 27]

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

字典推導(dǎo)基本格式:

{ key_expr: value_expr for value in collection }

{ key_expr: value_expr for value in collection if condition }

示例1:根據(jù)列表中各字符串及其長(zhǎng)度創(chuàng)建字典

>>> listdemo = ['Google','Runoob', 'Taobao']
>>> newdict = {key:len(key) for key in listdemo}
>>> newdict
{'Google': 6, 'Runoob': 6, 'Taobao': 6}

示例2:提供三個(gè)數(shù)字,以三個(gè)數(shù)字為鍵,三個(gè)數(shù)字的平方為值來(lái)創(chuàng)建字典

>>> dict1 = {x:x**2 for x in (1,2,3)}
>>> dict1
{1: 1, 2: 4, 3: 9}

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

集合推導(dǎo)式基本格式:

{ expression for item in Sequence }

{ expression for item in Sequence if conditional }

示例1:計(jì)算數(shù)字 1,2,3 的平方數(shù)

>>> new_set = {x**2 for x in range(1,4)}
>>> new_set
{1, 4, 9}

示例2:判斷不是 abc 的字母并輸出

>>> a = {x for x in 'abracadabra' if x not in 'abc'}
>>> a
{'r', 'd'}

4. 元組(tuple)推導(dǎo)式

元組推導(dǎo)式返回的結(jié)果是一個(gè)生成器對(duì)象,而不是元組
元組推導(dǎo)式基本格式:

(expression for item in Sequence )

(expression for item in Sequence if conditional )

示例1:生成一個(gè)包含數(shù)字 1~9 的元組

>>> a = (x for x in range(1,10))
>>> a
<generator object <genexpr> at 0x7faf6ee20a50>  # 返回的是生成器對(duì)象
>>> tuple(a)       # 使用 tuple() 函數(shù),可以直接將生成器對(duì)象轉(zhuǎn)換成元組
(1, 2, 3, 4, 5, 6, 7, 8, 9)
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容