集合
集合(Set)是一種無序且無重複元素的數據結構。集合中的每個元素都是唯一的,這意味著集合不允許重複的元素。集合可以用來進行關係測試,刪除重複數據,以及計算交集、差集、並集等操作。
創建集合
可以使用 set()
函數來創建一個集合,set()
可以接受一個可迭代對象作為參數。例如:
x = set('runoob') y = set('google')
這裡的 x
和 y
分別是通過將字串 'runoob'
和 'google'
轉換為集合創建的。因為集合中的元素是唯一的,所以在創建集合時,重複的元素會被自動刪除。範例如下:
print(x) # 輸出: {'b', 'r', 'u', 'o', 'n'} print(y) # 輸出: {'e', 'o', 'g', 'l'}
在這裡,'runoob'
中的重複字符 'o'
被刪除了。
集合操作
集合可以進行以下基本操作:
- 交集(&):返回同時存在於兩個集合中的元素。
- 並集(|):返回存在於任一集合中的所有元素。
- 差集(-):返回存在於第一個集合但不在第二個集合中的元素。
例如:
x = set('runoob') y = set('google') print(x & y) # 交集,輸出: {'o'} print(x | y) # 並集,輸出: {'b', 'e', 'g', 'l', 'o', 'n', 'r', 'u'} print(x - y) # 差集,輸出: {'r', 'b', 'u', 'n'}
這些操作使得集合在數據處理中特別有用,尤其是當你需要比較兩組數據時。
集合的特性
- 無序性:集合中的元素沒有順序,這意味著你不能通過索引來訪問集合中的元素。每次打印集合時,元素的順序可能不同。
- 唯一性:集合中的每個元素都是唯一的,這使得集合可以自動去重。例如,
set('runoob')
只會保留'r'
,'u'
,'n'
,'o'
,'b'
,不會保留重複的'o'
。
集合與字典的區別
集合與字典都使用花括號 {}
定義,但字典是以 key:value
的形式存儲鍵值對,而集合只包含鍵,且不存儲值。因此,字典是一組鍵值對的集合,而集合是一組唯一鍵的集合。
常用的集合操作方法
- add(element):向集合中添加元素。如果元素已存在,集合不會發生變化。
- remove(element):從集合中刪除元素。如果元素不存在,則會引發
KeyError
錯誤。 - discard(element):與
remove()
相似,但如果元素不存在時不會引發錯誤。 - pop():隨機刪除並返回集合中的一個元素。因為集合是無序的,所以無法指定刪除哪個元素。
- clear():清空集合中的所有元素。
- copy():返回集合的淺複製。
例如:
x = set('hello') x.add('p') print(x) # 輸出: {'p', 'h', 'e', 'l', 'o'} x.remove('h') print(x) # 輸出: {'p', 'e', 'l', 'o'} x.discard('x') # 不會引發錯誤,即使 'x' 不在集合中 print(x) # 輸出: {'p', 'e', 'l', 'o'}