1. 程式人生 > >基礎數據類型{set集合}

基礎數據類型{set集合}

添加 hash 元素 inter 操作 增刪 清空 並集 數據

一.集合

set集合是python的?個基本數據類型. ?般不是很常?. set中的元素是不重復的.?序的.??的元素必須是可hash的(int, str, tuple,bool), 我們可以這樣來記. set就是dict類型的數據但是不保存value, 只保存key. set也?{}表?

註意: set集合中的元素必須是可hash的, 但是set本?是不可hash得. set是可變的.

set1 = {‘1‘,‘alex‘,2,True,[1,2,3]} # 報錯
set2 = {‘1‘,‘alex‘,2,True,{1:2}} # 報錯
set3 = {‘1‘,‘alex‘,2,True,(1,2,[2,3,4])} # 報錯

set中的元素是不重復的, 且?序的.

s = {"周傑倫", "周傑倫", "周星星"}
print(s)
結果:
{‘周星星‘, ‘周傑倫‘}

使?這個特性.我們可以使?set來去掉重復

# 給list去重復
lst = [45, 5, "哈哈", 45, ‘哈哈‘, 50]
lst = list(set(lst)) # 把list轉換成set, 然後再轉換回list
print(lst)

set集合增刪改查

1. 增加

s = {‘劉嘉玲‘,‘關之琳‘,‘王祖賢‘}

s.add("鄭裕玲")
print(s)
s.add("鄭裕玲") # 重復的內容不會被添加到set集合中
print(s)
s = {"劉嘉玲", ‘關之琳‘, "王祖賢"}
s.update("麻花藤") # 叠代更新
print(s)
s.update(["張曼?", "李若彤","李若彤"])
print(s)

2. 刪除

s = {"劉嘉玲", ‘關之琳‘, "王祖賢","張曼?", "李若彤"}
item = s.pop() # 隨機彈出?個.
print(s)
print(item)
s.remove("關之琳") # 直接刪除元素
# s.remove("??疼") # 不存在這個元素. 刪除會報錯
print(s)
s.clear() # 清空set集合.需要註意的是set集合如果是空的. 打印出來是是set() 因為要和dict區分的.

print(s) # set()

3. 修改

# set集合中的數據沒有索引. 也沒有辦法去定位?個元素. 所以沒有辦法進?直接修改.
# 我們可以采?先刪除後添加的?式來完成修改操作
s = {"劉嘉玲", ‘關之琳‘, "王祖賢","張曼?", "李若彤"}
# 把劉嘉玲改成趙本?
s.remove("劉嘉玲")
s.add("趙本?")
print(s)

4. 查詢

# set是?個可叠代對象. 所以可以進?for循環
for el in s:
  print(el)

5. 常?操作

s1 = {"劉能", "趙四", "???"}
s2 = {"劉科?", "馮鄉?", "???"}
# 交集
# 兩個集合中的共有元素
print(s1 & s2) # {‘???‘}
print(s1.intersection(s2)) # {‘???‘}
# 並集

print(s1 | s2) # {‘劉科?‘, ‘馮鄉?‘, ‘趙四‘, ‘???‘, ‘劉能‘}
print(s1.union(s2)) # {‘劉科?‘, ‘馮鄉?‘, ‘趙四‘, ‘???‘, ‘劉能‘}
# 差集
print(s1 - s2) # {‘趙四‘, ‘劉能‘} 得到第?個中單獨存在的
print(s1.difference(s2)) # {‘趙四‘, ‘劉能‘}
# 反交集

print(s1 ^ s2) # 兩個集合中單獨存在的數據 {‘馮鄉?‘, ‘劉能‘, ‘劉科?‘, ‘趙四‘}
print(s1.symmetric_difference(s2)) # {‘馮鄉?‘, ‘劉能‘, ‘劉科?‘, ‘趙四‘}
s1 = {"劉能", "趙四"}
s2 = {"劉能", "趙四", "???"}
# ?集
print(s1 < s2) # set1是set2的?集嗎? True

print(s1.issubset(s2))
# 超集
print(s1 > s2) # set1是set2的超集嗎? False
print(s1.issuperset(s2))

set集合本?是可以發?改變的. 是不可hash的. 我們可以使?frozenset來保存數據.
frozenset是不可變的. 也就是?個可哈希的數據類型

s = frozenset(["趙本?", "劉能", "???", "?跪"])
dic = {s:‘123‘} # 可以正常使?了
print(dic

這個不是很常?. 了解?下就可以了

基礎數據類型{set集合}