集合set
集合是數學意義上的集合
特徵:沒有重複元素
集合對象操作
定義集合
方法1:s = set()
方法2:s = {1, 2, 3}
方法3:s = set(range(3)) # 初始化一個可迭代對象
刪除集合
需要使用del方法刪除
截至2020年5月23日,本人暫時還未發現其他的方法
集合元素的操作
增加
- s.add(value)方法
- s.update(可迭代對象)附加一個可迭代對象
- 增加元素都是原地修改返回None
- 集合的特性就是沒有重複元素,所以是不會新增重複的元素的
In [45]: s = {0, 1, 2}
In [46]: s.add(3) # 和列表類似, 增加單個元素, 原地修改
In [47]: s
Out[47]: {0, 1, 2, 3}
In [48]: s.add(3) # 增加已存在的元素, 什麼也不做
In [49]: s
Out[49]: {0, 1, 2, 3}
In [50]: s.update(range(4, 7)) # 和列表類似, 附加一個可迭代對象, 原地修改
In [51]: s
Out[51]: {0, 1, 2, 3, 4, 5, 6}
In [52]: s.update(range(4, 7)) # 對於已經存在的元素, 什麼也不做
In [53]: s
Out[53]: {0, 1, 2, 3, 4, 5, 6}
update的實現
In [54]: for e in itrator:
...: s.add(e)
刪除
- remove:刪除給定的元素, 元素不存在, 拋出KeyError
- discard:刪除給定的元素, 元素不存在, 什麼也不做
- pop:隨機刪除一個元素並返回, 集合爲空, 拋出KeyError。在集合中無法根據索引刪除(不是線性結構)
- clear:清空集合
In [55]: s.remove(0) # 刪除已經存在的值
In [56]: s
Out[56]: {1, 2, 3, 4, 5, 6}
In [57]: s.remove(10) # 刪除不存在的值, 拋出KeyError
---------------------------------------------------------------------------
KeyError Traceback (most recent call last)
<ipython-input-57-99f2b84d3df8> in <module>()
----> 1 s.remove(10)
KeyError: 10
In [58]: s.pop() # 刪除並返回刪除的元素
Out[58]: 1
In [59]: s
Out[59]: {2, 3, 4, 5, 6}
In [60]: s.clear() # 清空
In [61]: s.pop() # 當集合爲空時, 拋出KeyError
---------------------------------------------------------------------------
KeyError Traceback (most recent call last)
<ipython-input-61-e76f41daca5e> in <module>()
----> 1 s.pop()
KeyError: 'pop from an empty set'
In [62]: s = set(range(10))
In [63]: s
Out[63]: {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}
In [64]: s.discard(3) # 刪除一個已經存在的值, 刪除並不返回
In [65]: s
Out[65]: {0, 1, 2, 4, 5, 6, 7, 8, 9}
In [66]: s.discard(10) # 刪除一個不存在的值, 也不返回任何值
修改
集合不能修改單個元素
查找
集合不能通過索引訪問。
集合沒有訪問單個元素的方法。
集合不是線性結構, 集合元素沒有順序