set.pop()理論上是隨機移除集合中的某一元素,但我在解釋器里試了4次,都是移除了集合中的第一個元素(PS: Python 3.6.2) ...
set_lst = [
('集合容器不可哈希',),
('集合中的元素必須可哈希',),
('集合是無序的',),
('集合自動去重',),
('增',),
('刪',),
('查',),
('集合運算',),
('練習',),
]
集合容器不可哈希
>>>hash(set())
TypeError: unhashable type: 'set'
集合中的元素必須可哈希
>>>num_set = {1, 2, 3, [4]}
TypeError: unhashable type: 'list'
集合是無序的
>>>num_set = {1, 2, 3, 4}
>>>num_set[0]
TypeError: 'set' object does not support indexing
集合自動去重
>>>num_set = {1, 1}
>>>num_set
{1}
增
>>>num_set = {1, 2}
>>>num_set.add(3)
>>>num_set
{1, 2, 3}
>>>num_set.update([4, 5])
>>>num_set
{1, 2, 3, 4, 5}
刪
set.pop()理論上是移除並返回任意的集合元素
(PS: Python 3.6.2)
集合是無序的,所以要刪除某一元素時,用remove()方法會更好一些
>>>num_set = {1, 2, 3, 4, '5', 6}
>>>num_set.pop()
1
>>>num_set.remove('5')
>>>num_set
{2, 3, 4, 6}
>>>num_set.clear()
>>>num_set
set()
>>>del num_set
>>>num_set
NameError: name 'num_set' is not defined
查
>>>num_set = {1, 2}
>>>for i in num_set:
... i
...
1
2
集合運算
>>>set_1 = {1, 2, 3, 4}
>>>set_2 = {4, 5, 6, 7}
交集
>>>set_1 & set_2
{4}
並集
>>>set_1 | set_2
{1, 2, 3, 4, 5, 6, 7, 8}
反交集
>>>set_1 ^ set_2
{1, 2, 3, 5, 6, 7, 8}
差集
>>>set_1 - set_2
{1, 2, 3}
子集與超集
>>>set_1 < set_2
False
>>>set_1 > set_2
False
練習
運用集合的知識為列表去重
>>>lst = [1, 1, 2, 2, 3, 4]
>>>lst = list(set(lst))
>>>lst
[1, 2, 3, 4]