1.添加元素
在 Python 中,向 set
添加一個元素可以使用 add()
方法。如果添加的元素已經存在于 set
中,add()
不會重復添加(因為 set
具有自動去重的特性)。
- 方法 1:
add(element)
(添加單個元素)
my_set = {1, 2, 3}
my_set.add(4) # 添加元素 4
print(my_set) # 輸出: {1, 2, 3, 4}
my_set.add(2) # 嘗試添加已存在的元素 2
print(my_set) # 輸出: {1, 2, 3, 4}(不會重復添加)
- 方法 2:
update(iterable)
(添加多個元素)如果要從 可迭代對象(如list
、tuple
、set
)中添加多個元素,可以使用update()
:
my_set = {1, 2, 3}
my_set.update(3, 4, 5) # 添加列表中的元素(自動去重)
print(my_set) # 輸出: {1, 2, 3, 4, 5}
- 方法 3:
|=
運算符(合并集合)也可以用|=
運算符合并另一個set
或可迭代對象:
my_set = {1, 2, 3}
my_set |= {3, 4, 5} # 相當于 my_set.update({3, 4, 5})
print(my_set) # 輸出: {1, 2, 3, 4, 5}
注意事項
-
set
只能存儲 不可變對象(如int
、str
、tuple
),不能直接存儲list
、dict
等可變對象。
-
- 如果嘗試添加可變對象(如
1, 2
),會拋出TypeError
: python my_set.add(1, 2) 報錯: TypeError: unhashable type: ‘list’ 如果需要存儲可變對象,可以改用frozenset
或轉換為tuple
。
- 如果嘗試添加可變對象(如
2.刪除元素
2.1刪除一個元素
在 Python 中,可以使用 set
的 remove()
或 discard()
方法來刪除一個元素。兩者的區別在于:
remove(element)
:如果元素存在,則刪除;如果元素不存在,會拋出KeyError
異常。discard(element)
:如果元素存在,則刪除;如果元素不存在,不會報錯(靜默處理)。 示例代碼
my_set = {1, 2, 3, 4, 5}
# 方法1: remove()
my_set.remove(3) # 刪除元素 3
print(my_set) # 輸出: {1, 2, 4, 5} 如果元素不存在,remove() 會報錯
try: my_set.remove(99) # KeyError: 99
except KeyError as e: print(f"Error: {e}") # 方法2: discard()
my_set.discard(2) # 刪除元素 2
print(my_set) # 輸出: {1, 4, 5}
my_set.discard(99) # 元素不存在,但不會報錯
print(my_set) # 輸出: {1, 4, 5}
pop()
隨機刪除一個元素并返回它:
popped_element = my_set.pop() # 隨機刪除并返回一個元素
print(f"Popped: {popped_element}, Remaining: {my_set}")
總結
- 確定元素存在 → 用
remove()
。 - 不確定元素是否存在 → 用
discard()
。 - 需要隨機刪除 → 用
pop()
。
2.2 刪除一組元素
要從 set
中快速刪除 list
中的所有元素,可以使用 set
的 difference_update()
方法,或者直接用 -=
運算符。這兩種方法都會直接修改原 set
,刪除所有在 list
中存在的元素。
- 方法 1:
difference_update()
my_set = {1, 2, 3, 4, 5}
to_remove =[2, 3, 6] # 6 不在 set 中,會被忽略
my_set.difference_update(to_remove) # 直接修改原 set
print(my_set) # 輸出: {1, 4, 5}
- 方法 2:
-=
運算符(推薦)
my_set = {1, 2, 3, 4, 5}
to_remove = [2, 3, 6]
my_set -= set(to_remove) # 相當于 my_set = my_set - set(to_remove)
print(my_set) # 輸出: {1, 4, 5}