分享Python中超級(jí)好用的三種解析式!
來(lái)源:投稿 作者:Fairy
編輯:學(xué)姐
Python中的解析式(comprehension)是一種簡(jiǎn)單的語(yǔ)法結(jié)構(gòu),它可以從可迭代對(duì)象中生成新的序列、集合或字典。其中最常見(jiàn)的三種解析式分別是列表解析式、字典解析式和集合解析式。這種方式可以讓我們用更簡(jiǎn)單、更易讀的語(yǔ)法快速地生成數(shù)據(jù)結(jié)構(gòu),提高代碼效率。
列表解析式
列表解析式通常用于從一個(gè)可迭代對(duì)象(例如列表、元組等)中快速創(chuàng)建一個(gè)新的列表。它的語(yǔ)法與for循環(huán)類似,可以帶有條件語(yǔ)句。使用列表解析式能夠讓我們更加簡(jiǎn)潔地表達(dá)對(duì)可迭代對(duì)象的操作,同時(shí)提高代碼的可讀性和效率。
1. 基本形式
expression為每個(gè)元素要執(zhí)行的操作,可以是任何有效的 Python 表達(dá)式。
item 是從可迭代對(duì)象中依次讀取的每個(gè)元素。
iterable 是被迭代的對(duì)象。
下面我們來(lái)看一個(gè)例子:
這段代碼的含義是使用列表解析式生成一個(gè)包含0到9的整數(shù)列表,并將其賦值給new_list變量。其中,range(10)返回一個(gè)包含0到9的整數(shù)序列,for x in range(10)表示遍歷序列中的每個(gè)整數(shù),并將其賦值給變量x。在列表解析式的中括號(hào)內(nèi),我們可以指定對(duì)每個(gè)x所執(zhí)行的操作,本例中只是簡(jiǎn)單地將x放入新列表中。最終,打印輸出new_list。

2. 帶if條件
expression為每個(gè)元素要執(zhí)行的操作,可以是任何有效的 Python 表達(dá)式。
item 是從可迭代對(duì)象中依次讀取的每個(gè)元素。
iterable 是被迭代的對(duì)象。
condition 是可選的,如果提供,則是對(duì)元素進(jìn)行過(guò)濾的條件。
下面我們來(lái)看一個(gè)例子:
這段代碼的含義是通過(guò)列表解析式從一個(gè)給定的列表my_list中生成一個(gè)新的列表new_list,新列表包含my_list中所有偶數(shù)元素。
在列表解析式的中括號(hào)內(nèi),我們首先使用for循環(huán)語(yǔ)句遍歷my_list中的每個(gè)元素,并將其賦值給變量x。if語(yǔ)句,我們可以限制將哪些元素添加到新列表中。這個(gè)案例中,if語(yǔ)句指定只有當(dāng)x是偶數(shù)時(shí)才將其添加到新列表new_list中。

3. 嵌套循環(huán)
expression為每個(gè)元素要執(zhí)行的操作,可以是任何有效的 Python 表達(dá)式。
item 是從可迭代對(duì)象中依次讀取的每個(gè)元素。
iterable 是被迭代的對(duì)象。
下面我們來(lái)看一個(gè)例子:
這段代碼的含義是通過(guò)使用嵌套的兩個(gè)for循環(huán)語(yǔ)句,生成了一個(gè)新列表new_list。該列表包含了由所有x和y組成的元組。
具體來(lái)說(shuō),這個(gè)列表解析式首先使用第一個(gè)for循環(huán)語(yǔ)句遍歷range(3)產(chǎn)生的整數(shù)序列(即0, 1, 2),將每一個(gè)值依次賦予變量x,然后再使用第二個(gè)for循環(huán)語(yǔ)句再次遍歷相同的整數(shù)序列,將每一個(gè)值依次賦予變量y。在for循環(huán)中,兩個(gè)變量x和y組成了一個(gè)元組(x, y),并將這個(gè)元組添加到一個(gè)新列表new_list中。

字典解析式
字典解析式用于從一個(gè)可迭代對(duì)象中創(chuàng)建一個(gè)新的字典。它使用與列表解析式相似的語(yǔ)法,但使用鍵值對(duì)表示。
key_expression 和 value_expression 分別是由 item 元素產(chǎn)生的鍵和值。
item 是從可迭代對(duì)象中依次讀取的每個(gè)元素。
iterable 是被迭代的對(duì)象。
condition 是可選的,如果提供,則對(duì)元素進(jìn)行過(guò)濾的條件。
下面我們來(lái)看一個(gè)例子:
這段代碼的含義是通過(guò)使用字典解析式從給定列表my_list中生成一個(gè)新的字典new_dict,其中字典的鍵是my_list中的每個(gè)元素x,而對(duì)應(yīng)的值是該元素的平方。
具體來(lái)說(shuō),我們使用for循環(huán)語(yǔ)句遍歷my_list中的每個(gè)元素,并將其賦值給變量x。在字典解析式內(nèi)部,我們使用花括號(hào){}表示一個(gè)字典。對(duì)于遍歷到的每個(gè)元素x,我們可以指定要將其作為鍵key,并且用冒號(hào):與其對(duì)應(yīng)的平方x**2構(gòu)成一個(gè)鍵值對(duì),在字典中進(jìn)行存儲(chǔ)。

集合解析式
集合解析式用于從可迭代對(duì)象中創(chuàng)建一個(gè)新的集合。它將與列表解析式類似,但不會(huì)保留重復(fù)項(xiàng)。
expression是每個(gè)元素要執(zhí)行的操作,可以是任何有效的 Python 表達(dá)式。
item 是從可迭代對(duì)象中依次讀取的每個(gè)元素。
iterable 是被迭代的對(duì)象。
condition 是可選的,如果提供,則對(duì)元素進(jìn)行過(guò)濾的條件。
下面我們來(lái)看一個(gè)例子:
這段代碼的含義是通過(guò)集合解析式從給定列表my_list中生成一個(gè)新集合new_set,該集合包含所有在my_list中出現(xiàn)的偶數(shù)元素。
具體來(lái)說(shuō),我們使用for循環(huán)語(yǔ)句遍歷my_list中的每個(gè)元素,并將其賦值給變量x。在集合解析式中,我們使用花括號(hào){}表示一個(gè)集合。對(duì)于遍歷到的每個(gè)元素x,我們使用if語(yǔ)句判斷是否為偶數(shù),如果是,則將其添加到新集合new_set中。

推薦課程
《Python ·? AI&數(shù)據(jù)科學(xué)入門》

關(guān)注“學(xué)姐帶你玩AI”公眾號(hào)
回復(fù)“Python”了解課程詳情