何謂集合(set)
大家在數學課應該多少有聽過"集合"這名詞,集合內的元素都是唯一且無順序的,例如集合內不會出現兩個數字1
或是出現兩個"python"
字串。常見的集合元素有:int
、float
、str
、tuple
、...,但不可以是list
、dict
、set
、...這類元素集合
I. 建立集合
集合是用一對{}
或set()
來表示
lang = {'Python', 'C', 'Java'}
print(lang) # {'C', 'Java', 'Python'}
wd = set('ChatGPT')
print(wd) # {'a', 'C', 'h', 'G', 't', 'T', 'P'}
grade = {90, 90, 90, 87, 60, 60, 55, 55, 30, 15}
print(grade) # {55, 87, 90, 60, 30, 15}
建立空集合
empty = set()
print(empty) # set()
II. 輸出集合
lang = {'Python', 'C', 'Java'}
for i in lang:
print(i, end=" ") # C Java Python
III. 集合的大小
使用len()
來得到集合大小
lang = {'Python', 'C', 'Java'}
print(len(lang)) # 3
IV. 交集
使用&
lang1 = {'Python', 'C', 'Java'}
lang2 = {'Ruby', 'C++', 'Python'}
print(lang1 & lang2) # {'Python'}
V. 聯集
使用|
lang1 = {'Python', 'C', 'Java'}
lang2 = {'Ruby', 'C++', 'Python'}
print(lang1 | lang2) # {'Python', 'C++', 'Java', 'Ruby', 'C'}
VI. 差集
使用-
lang1 = {'Python', 'C', 'Java'}
lang2 = {'Ruby', 'C++', 'Python'}
print(lang1 - lang2) # {'Java', 'C'}
VII. 對稱差集
使用^
lang1 = {'Python', 'C', 'Java'}
lang2 = {'Ruby', 'C++', 'Python'}
print(lang1 ^ lang2) # {'Java', 'Ruby', 'C++', 'C'}
VIII. 兩集合是否相同
使用==
、!=
lang1 = {'Python', 'C', 'Java'}
lang2 = {'Ruby', 'C++', 'Python'}
print(lang1 == lang2) # False
print(lang1 != lang2) # True
IX. 元素是否存在於集合中
使用in
、not in
NBA= {'James', 'Durant', 'Curry'}
print('Durant' in NBA) # True
print('James' not in NBA) # False
X. 加入、刪除集合中元素
加入
使用add()
NBA= {'James', 'Durant', 'Curry'}
NBA.add('Jokic')
print(NBA) # {'Jokic', 'James', 'Curry', 'Durant'}
移除
使用remove()
,若欲刪除的物件不存在會產生錯誤
NBA= {'James', 'Durant', 'Curry'}
NBA.remove('James')
print(NBA) # {'Durant', 'Curry'}
NBA.remove('James')
print(NBA) # KeyError: 'James'
使用discard()
,若欲刪除的物件不存在不會產生錯誤
NBA= {'James', 'Durant', 'Curry'}
NBA.discard('Jokic')
print(NBA) # {'Durant', 'James', 'Curry'}
使用pop()
,會隨機刪除集合內元素,並會回傳所刪之元素
NBA= {'James', 'Durant', 'Curry'}
print(NBA.pop()) # Durant
使用clear()
,會清除集合內所有元素,得到空集合:set()
NBA= {'James', 'Durant', 'Curry'}
NBA.clear()
print(NBA) # set()