對比 | Python中超級好用的「列表解析式」、「字典解析式」、「集合解析式」

2020-10-14 11:00:23

1. 列表、字典、集合概念說明

在講述這三個概念之前,首先我們需要對列表、字典、集合這三個概念,做一個簡單的說明。

列表:列表是由一系列按特定順序排列的元素組成的,是一個有序組合。在Python中,用[ ]號表示列表,用半形狀態下的逗號來分割列表中的元素。列表中的元素可以重複。字典:

2. 列表解析式

列表推導式在日常程式設計中,發揮著很重要的作用(尤其是利用python做資料淨化的時候),它能夠簡化我們的程式碼,及其好用,我這裡將它的常見3種用法給大家總結一下。

① 一般形式

  • 語法格式:[ expression for i in iterable ]
x = [1, 3, 5, 7, 9]
y = [i**2 for i in x]
print(y)

結果如下:
在這裡插入圖片描述

② 帶if的列表解析式

  • 語法格式:[ expression for i in iterable if…]
x = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
y = [i for i in x if i % 2 == 0]
print(y)

結果如下:
在這裡插入圖片描述

③ 帶if…else…的列表解析式

  • 語法格式:[ expression if…else… for i in iterable]
x = [1, 2, 3, 4, 5, 6]
y = ["我是偶數" if i % 2 == 0 else "我是奇數" for i in x]
print(y)

結果如下:
在這裡插入圖片描述

2. 字典解析式

其實不管是現在要講述的字典解析式,還是後面要講述的集合解析式,基本都可以使用列表解析式的3中常規操作。我這裡僅僅用下面這一個案例來進行說明。

  • 基本語法格式:{ expression for i in iterable }
  • 用法還是和列表一樣,區別就是:用 { } 包起來,而且前面的expression是 key:value 的形式。

這裡有一份成績單,記錄了每個學生的英語成績,下面我要篩選出英語成績及格(大於等於60)的資訊。

x = {'張三': 70, '李四': 49,'王五': 67, '趙六': 80,'沈七': 99}
y = {k: v for k, v in x.items() if int(v) >= 60}
print(y)

結果如下:

在這裡插入圖片描述

3. 集合解析式

注意一個概念,集合是不可重複的,集合解析式能夠自動實現去重功能。其實這裡的用法和上述的字典有點相似,仔細看清楚哦。

  • 基本語法格式:{ expression for i in iterable }
  • 用法和字典類似,也是用 { } 包起來,但是前面的expression不再是 key:value 的形式。
x = ["香蕉","橘子","西瓜","香蕉","橘子"]
y = {i for i in x}
print(y)

結果如下:
在這裡插入圖片描述