Python 極簡教程(十)集合 set

2022-08-30 03:09:11 字數 3687 閱讀 1966

什麼是集合?

集合(set)是一種可變無序不重複的序列。

集合是python的序列之一,集合沒有列表(list)、元組(tuple)和字典(ditc)常見。但是有時候也有奇效。

我們先來看個集合的例子:

>>> s = 

>>> type(s)

#

s =就是乙個集合(set),資料型別就是set。

我們可以仔細觀察一下集合(set)的形態:

可以簡單的理解為就是沒有值(value)的字典(dict)。

當然這是我說的,不夠準確,被人罵了不要來找我!

接下來我們來看下集合的基本操作。

集合的建立

我們看如何建立集合:

建立乙個空的集合;

空集合的建立不能用以下這種形式

>>> s = {}                # 這是乙個空字典,不是空集合

>>> type(s)

#

那要如何建立乙個空的集合呢?

>>> s = set()               # 這是乙個空字典,不是空集合

>>> s

# set()

>>> type(s)

#

我們可以看到要建立乙個空集合,要使用s = set()這種方式。

建立非空的集合;

set()可以將任意一種序列變成集合

# 列表

>>> li = ['a', 'b', 'c']

>>> set(li)

# # 元組

>>> t = (1,2,3)

>>> set(t)

# # 字典

>>> d =

>>> set(d)

# # 字串

>>> set('python')

#

利用集合的不重複狀態,進行序列的去重

# 有重複元素的列表

>>> li = ['a', 'b', 'c', 'a', 'c']

>>> s = set(li)

# # 如果想去重後依然是列表,轉換一下

>>> li = list(set(li))

>>> li.sort()

>>> li

# ['a', 'b', 'c']

集合元素的新增、刪除

集合元素的新增有兩種常用方法,分別是add和update

>>> s = 

>>> s.add('abc') #這裡會把'abc'當成乙個字串

>>> s

#

集合中的元素不能是列表(list)、字典(dict)

>>>s = 

>>> s.add([1,2])

typeerror: unhashable type: 'list'

>>> s.add()

typeerror: unhashable type: 'dict'

update方法類似於列表相加,其中update的引數為序列。也就是把序列中的所有元素全部無序併排重後加入到集合中。

>>> s = 

>>> s.update('xyz') #這裡會把'xyz'當成序列來處理,'x','y','z'分別是三個元素

>>> s

#

集合元素的刪除方法

集合刪除操作方法有兩種:

s.remove('e'):刪除匹配的元素

s.pop():刪除第乙個元素,無法指定index,因為集合沒有index

# remove

>>> s =

>>> s.remove('a')

>>> s

# # pop

>>> s =

>>> s.pop()

# 'b'

>>> s

#

集合的交集、合集(並集)、差集

通過集合的交集、合集(並集)、差集可以很方便的處理一些列表(list)

交集:

交集,符號「&」,表示兩個集合中相同的元素部分組成新的集合

# 交集 &

>>> a = set(['a', 'b', 'c'])

>>> b = set(['b','d','e'])

>>> a & b

#

合集(並集)

合集(並集),符號「|」,表示兩個集合組合成乙個不重複的新集合(也就是重複部分會進行排重)

# 合集(並集) |

>>> a = set(['a', 'b', 'c'])

>>> b = set(['b','d','e'])

>>> a | b

#

差集、相對補集

差集、相對補集, 符號「-」,如果 a - b 表示a集合中沒有在b集合中存在的元素,反之 b - a 表示b集合中沒有在a集合中存在的元素。可以用於取兩個集合中不相同的元素。

# 合集(並集) |

>>> a = set(['a', 'b', 'c'])

>>> b = set(['b','d','e'])

>>> a - b

# >>> b - a

#

其他

除開上面集中集合外,還有類似與列表(list)中的一些操作,如in,not in,!=,==等

# 不等於 !=

>>> a != b

# true

# 等於 ==

>>> a == b

# false

# 包含 in

>>> a in b

# false

# 不包含 not in

>>> a not in b

# true

通過集合,我們可以方便快速的處理各種序列中的一些特殊操作。

排重,如果序列中存在重合的元素,可以通過集合方便的去重;

取兩個序列中相同的元素,通過將序列轉換為集合後,取交集即可;

將兩個序列合併,並且元素不重複,通過合集即可;

取兩個序列中不相同的部分,用差集即可。

本節練習:

將列表 [5, 6, 7, 4, 5, 7] 中重複的元素去掉

求列表[2, 3, 5, 7, 9]和[2, 4, 5, 9, 8] 中的相同元素和不同元素

Python極簡教程之三 集合之列表(list)

語法 arr arr a b c 二維陣列 a 1,2,1,2,3 多維陣列 arr i for i in range 10 1,注意,i for in xx 這個必須放在第乙個位置,否則要先定義 i i 0 j 0 arr i for i in range 5 j for j in range 5...

Python 極簡教程(十一)集合 set

集合 set 是一種可變,無序和不重複的序列。集合是python的序列之一,集合沒有列表 list 元組 tuple 和字典 ditc 常見。但是有時候也有奇效。我們先來看個集合的例子 s type s s 就是乙個集合 set 資料型別就是set。我們可以仔細觀察一下集合 set 的形態 可以簡單...

python3集合 Python3 集合

集合 set 是乙個無序的不重複元素序列。可以使用大括號 或者 set 函式建立集合,注意 建立乙個空集合必須用 set 而不是 因為 是用來建立乙個空字典。建立格式 parame 或者set value 這裡演示的是去重功能 orange in basket 快速判斷元素是否在集合內 true c...