7. 集合

何謂集合(set)

大家在數學課應該多少有聽過"集合"這名詞,集合內的元素都是唯一且無順序的,例如集合內不會出現兩個數字1或是出現兩個"python"字串。常見的集合元素有:intfloatstrtuple、...,但不可以是listdictset、...這類元素集合

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. 元素是否存在於集合中

使用innot 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()

Last updated