Python集合推導式

2020-07-16 10:04:49
Python中,使用集合推導式可以藉助列表、元組、字典、集合以及 range 區間,快速生成符合需求的集合。

集合推導式的語法格式和字典推導式完全相同,如下所示:

{ 表示式 for 疊代變數 in 可疊代物件 [if 條件表示式] }

其中,用 [] 括起來的部分,可以使用,也可以省略。

有讀者可能會問,集合推導式和字典推導式的格式完全相同,那麼給定一個類似的推導式,如何判斷是哪種推導式呢?最簡單直接的方式,就是根據表示式進行判斷,如果表示式以鍵值對(key:value)的形式,則證明此推導式是字典推導式;反之,則是集合推導式。

【例 1】
setnew = {i**2 for i in range(3)}
print(setnew)
執行結果為:

{0, 1, 4}


【例 2】既然生成的是集合,那麼其儲存的元素必須是唯一的。
tupledemo = (1,1,2,3,4,5,6,6)
setnew = {x**2 for x in tupledemo if x%2==0}
print(setnew)
執行結果為:

{16, 4, 36}


【例 3】
dictdemo = {'1':1,'2':2,'3':3}
setnew = {x for x in dictdemo.keys()}
print(setnew)
執行結果為:

{'2', '1', '3'}