1. 程式人生 > Python入門教學 >14 Python 資料型別詳細篇:集合

14 Python 資料型別詳細篇:集合

這節課是資料型別篇最後一節了,這節課我們來講下集合資料型別,集合這個資料型別很特殊,到底是個怎麼特殊法,下面我們一起來看下:

1. 簡介

1.1 定義

集合是一個無序、不重複的序列,集合中所有的元素放在 {} 中間,並用逗號分開,例如:

  • {1, 2, 3},一個包含 3 個整數的列表
  • {‘a’, ‘b’, ‘c’},一個包含 3 個字串的列表

1.2 集合與列表的區別

在 Python 中,集合與列表的區別如下:

  • 列表中的元素允許重複,集合中的元素不允許重複,示例如下:
>>> x = {1, 1, 2, 3}
>>> x
{1, 2, 3}

在以上程式中,元素 1 被重複了 2 次,在建立集合時,重複的元素被合併成一個。

  • 列表是有序的,提供了索引操作,集合是無序的,沒有索引操作,示例如下
>>> x = {1, 2, 3}
>>> x[0]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'set' object does not support indexing

在以上程式中,試圖使用索引操作符訪問集合的第 0 項元素。集合是無序的,不提供索引操作,執行時出錯,提示: ‘set’ object does not support indexing。

2. 常見運算操作

本節介紹對集合的最常見的幾種運算操作,包括:

2.1 運算子 +

使用運算子 + 合併兩個集合,示例如下:

>>> {1, 2} + {3, 4}
{1, 2, 3, 4}
>>> {1, 2} + {3, 4} + {5, 6}
{1, 2, 3, 4, 5, 6}
  • 在第 1 行,使用運算子 + 合併兩個集合
  • 在第 3 行,使用運算子 + 合併多個集合

2.2 運算子 -

使用運算子 - 從集合中刪除元素,示例如下:

>>> {1, 2, 3, 4} - {3, 4}
{1, 2}
  • 在第 1 行,使用運算子 - 從集合 {1, 2, 3, 4} 中刪除集合 {3, 4} 包含的元素

2.3 關鍵字 in

通過關鍵字 in 檢查集合中是否包含指定元素,示例如下:

>>> 'imooc' in {'www', 'imooc', 'com'}
True
>>> 'mooc' in {'www', 'imooc', 'com'}
False
  • 在第 1 行,檢測字串 ‘imooc’ 在集合中
  • 在第 3 行,檢測字串 ‘mooc’ 不在集合中

3. 常見函式

3.1 len(set) 函式

使用函式 len 獲取集合的長度,示例如下:

>>> len({1, 2, 3})
3
>>> len({1, 2, 3, 4})
4

3.2 max(set) 函式

使用函式 max 獲取集合中最大的元素,示例如下:

>>> max({1, 2})
2
>>> max({1, 3, 2})
3

3.3 min(set) 函式

使用函式 min 獲取集合中最小的元素,示例如下:

>>> min({1, 2})
1
>>> min({1, 3, 2})
1

4. 常見方法

4.1 add(item) 方法

add(item) 方法向集合中新增一個元素 item,示例如下:

>>> x = {1, 2, 3}
>>> x.add(4)
>>> x
{1, 2, 3, 4}
  • 在第 2 行,使用 add 方法向集合中新增一個元素 4
  • 在第 4 行,顯示列表中已經增加了一個元素

4.2 remove(item) 方法

remove(item) 方法從集合中刪除指定元素 item,示例如下:

>>> x = {'www', 'imooc', 'com'}
>>> x.remove('imooc')
>>> x
{'www', 'com'}
  • 在第 2 行,使用 remove 方法從集合中刪除一個元素 ‘imooc’
  • 在第 4 行,顯示列表中已經刪除了一個元素

4.3 clear() 方法

clear() 方法移除集合中的所有元素,示例如下:

>>> x = {1, 2, 3}
>>> x
{1, 2, 3}
>>> x.clear()
>>> x
set()
  • 在第 1 行,建立了一個包含 3 個元素的集合
  • 在第 4 行,使用 clear() 方法移除集合中的所有元素
  • 在第 5 行,顯示集合,結果表明所有元素都被刪除了

4.4 union() 方法

union() 方法返回兩個集合的並集,示例如下:

>>> x = {1, 2, 3}
>>> y = {4, 5, 6}
>>> z = x.union(y)
>>> z
{1, 2, 3, 4, 5, 6}
  • 在第 3 行,使用 union() 方法返回集合 x 和集合 y 的並集
  • 在第 4 行,顯示兩個集合的並集

4.5 intersection() 方法

intersection() 方法返回兩個集合的交集,示例如下:

>>> x = {1, 2, 3}
>>> y = {2, 3, 4}
>>> z = x.intersection(y)
>>> z
{2, 3}
  • 在第 3 行,使用 intersection() 方法返回集合 x 和集合 y 的交集
  • 在第 4 行,顯示兩個集合的交集

4.6 issubset() 方法

issubset() 方法判斷指定集合是否為子集,示例如下:

>>> x = {1, 2, 3}
>>> y = {1, 2}
>>> y.isubset(x)
True
  • 在第 3 行,使用 issubset() 方法判斷集合 y 是否為集合 x 的子集
  • 在第 4 行,結果表明集合 {1, 2} 是集合 {1, 2, 3} 的子集

4.7 issuperset() 方法

issuperset() 方法判斷指定集合是否為超集,示例如下:

>>> x = {1, 2, 3}
>>> y = {1, 2}
>>> x.isuperset(y)
True
  • 在第 3 行,使用 issuperset() 方法判斷集合 x 是否為集合 y 的超集
  • 在第 4 行,結果表明集合 {1, 2, 3} 是集合 {1, 2} 的超集

5. 小結

集合不存在重複元素這一特效能用來乾的事情非常多。比如說一個學校要把全校所有學生的資訊錄入到系統中,為了避免某一學生的資訊重複錄入只需要把資訊存入集合就可以避免這一錯誤。