集合
集合(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'}
