教程:
集合是一個無序不重複元素的序列,它的特點是:有的可變,有的不可變,元素無序不可重複!
一:集合的建立
(1)使用花括號
set={value1, values2}
注意建立一個空集合的時候不能用{},此時建立的是一個字典
(2)使用行內函數set()——>可以原地修改的集合
s = set()
注意: 集合是無序的(集合不是序列型別,則集合也不支援索引和切片),
列印結果取決於內部儲存結構和輸出方式
(3)使用行內函數frozenset()—->hashable 可雜湊卡型別
二:集合的索引(不允許)
File “<ipython-input-5-9b6a789630ee>”, line 1, in <module>
set_1[1]
TypeError: `set` object does not support indexing
三:集合的運算
(1)元素與集合之間的關係
`i` in set(`ilove`)
(2)集合a與集合b之間的關係
a == b 判斷是否相等
a < b 或者 a.issubset(b) 判斷是否為子集
a 並 b —> a|b 或者 a.union(b)
a 交 b —> a&b 或者 a.intersection(b)
a 補 b —> a-b 或者 a.difference(b)
a 和 b 的對稱差集 a^b 或者 a.symmetric_difference(b)
三:集合元素的新增
(1)方法一: s.add(x)
(2)方法二: s.update(x) 其中x可以是列表,元組,字典
四:集合元素的刪除
(1)方法一: s.remove(x) 元素不存在發生錯誤
(2)方法二: s.discard(x) 元素不存在不會發生錯誤
(3)方法三: s.pop() 隨機刪除一個元素
(4)方法四: s.clear() 清空集合
五:集合內建函式
len(set)—-set元素的總數
set.add()—–新增
set.update()–更新
還包括上面的四個函式
CODE:
# —————————————————————————————————–#
# 集合的建立
# —————————————————————————————————–#
set_1 = set(`abracadabra`) # 建立可變的集合
print(“set_1:”, set_1)
set_1.add(`python`) # 元素的新增
print(“新增Python後set_1:”, set_1)
set_2 = set(`alacazam`)
print(“set_2:”, set_2)
set_3 = frozenset(`faith`) # 建立不可變的集合驗證元素不可新增
print(“建立不可變集合set_3:”, set_3)
# —————————————————————————————————–#
# 集合的運算
# —————————————————————————————————–#
print(“set_1 – set_2: “, set_1 – set_2)
print(“set_1 | set_2: “, set_1 | set_2)
print(“set_1 & set_2: “, set_1 & set_2)
print(“set_1 ^ set_2: “, set_1 ^ set_2)
# —————————————————————————————————–#
# 集合元素的新增(對於可變集合)
# —————————————————————————————————–#
# 方法一
set_2 = set(`alacazam`)
set_2.add(“faith”)
print(“新增元素方法一:”, set_2)
# 方法二
x = {1, 2, 3, `aaa`} # 列表
y = (1, 2, 3, `aaa`) # 元組
z = {1: `wang`, 2: `aaa`} # 字典—>只新增鍵值
set_2.update(z)
print(“新增元素方法二:”, set_2)
# —————————————————————————————————–#
# 集合元素的刪除
# —————————————————————————————————–#
# 方法一
set_2.remove(`faith`)
print(“刪除元素方法一:”, set_2)
# 方法二
set_2.discard(`1`)
print(“刪除元素方法二:”, set_2)
# 方法三
set_2.pop()
print(“刪除元素方法三:”, set_2)
# 方法三
set_2.clear()
print(“刪除元素方法四:”, set_2)