集合set和frozenset凍結集合函式
阿新 • • 發佈:2020-08-11
集合set
set和dict類似,也是一組key的集合,但不儲存value。由於key不能重複,所以在set中沒有重複的key。
集合中的元素要求是不可變的並且還是唯一的,我們就利用它是唯一來做去重。
set可以看成數學意義上的無序和無重複的集合,因此,兩個set可以做數學意義上的交集、並集等操作。
一、集合特點-去重
lst=[1,2,3,2,3,4,2,5,6,2] #定義列表lst print(lst) #輸出列表 print(set(lst)) #lst轉化為集合輸出(去重) print(list(set(lst))) #去重後的集合轉化為列表輸出 結果: [1, 2, 3, 2, 3, 4, 2, 5, 6, 2] {1, 2, 3, 4, 5, 6} [1, 2, 3, 4, 5, 6]
二、集合的基本操作-交集
交集、並集、差集、反交集、子集、超集
set={1,2,3} #定義集合set set1={2,3,4} #定義集合set1 set2=set | set1 #並集-合併集合 set3=set-set1 #差集-set中的單獨元素 set4=set ^ set1 #反交集-兩個集合中的單獨元素 set5=set < set1 #set是set1的子集嗎?輸出布林值 set6=set > set1 #set是set1的超集嗎?輸出布林值 print(set & set1) #交集-兩個集合中的共有元素 print(set2) print(set3) print(set4) print(set5) print(set6) 結果: {2, 3} {1, 2, 3, 4} {1} {1, 4} False False
三、集合的增刪改查
1.增加⭐
s = {"羅志祥", '文章', "周星馳"} s.add("何炅") print(s) s.add("何炅") # 重複的內容不會被新增到set集合中 print(s) s1 = {"劉德華", '張學友', "張柏芝"} s1.update("陳冠希") # 迭代更新 print(s1) s1.update(["唐韻", "林逸","林逸"]) print(s1) 結果: {'周星馳', '羅志祥', '何炅', '文章'} {'周星馳', '羅志祥', '何炅', '文章'} {'張柏芝', '劉德華', '冠', '張學友', '陳', '希'} {'張柏芝', '劉德華', '冠', '林逸', '張學友', '陳', '希', '唐韻'}
2.刪除⭐
隨機刪除、指定元素刪除、清空集合
s = {"周星馳", '周星星', "周瑞發","張學友", "楊虎城"}
item = s.pop() # 隨機彈出⼀個.
print(s)
print(item)
s.remove("周星星") # 直接刪除元素
# s.remove("劉亦菲") # 不存在這個元素. 刪除會報錯
print(s)
s.clear() # 清空set集合.需要注意的是set集合如果是空的. 打印出來是set() 因為要和dict區分的.
print(s) # set()
結果:
{'周星星', '張學友', '周瑞發', '楊虎城'}
周星馳
{'張學友', '周瑞發', '楊虎城'}
set()
3.修改⭐
set集合中的資料沒有索引. 也沒有辦法去定位⼀個元素. 所以沒有辦法進⾏直接修改.
我們可以採⽤先刪除後新增的⽅式來完成修改操作
s = {'阿斯頓','阿瑟東','阿三的'}
s.remove('阿三的')
s.add('周星星')
print(s)
結果:
{'周星星', '阿瑟東', '阿斯頓'}
4.查詢⭐
# set是⼀個可迭代物件. 所以可以進⾏for迴圈
s = {'阿斯頓','阿瑟東','阿三的'}
for i in s:
print(i)
結果:
阿斯頓
阿瑟東
阿三的
四、frozenset函式
描述
frozenset() 返回一個凍結的集合,凍結後集合不能再新增或刪除任何元素。
語法
frozenset() 函式語法:
class frozenset([iterable])
引數
- iterable -- 可迭代的物件,比如列表、字典、元組等等。
返回值
返回新的 frozenset 物件,如果不提供任何引數,預設會生成空集合。
例項
以下例項展示了 frozenset() 的使用方法:
a=frozenset(range(10)) #生成一個新的不可變集合
print(a)
b=frozenset('runoob') #建立不可變集合
print(b)
c=frozenset(['終止','啊實打實','阿薩']) #通過frozenset把集合變得可雜湊(把不可變集合作為字典的key)
print(c)
dic={c:'123'}
print(dic)
結果:
frozenset({0, 1, 2, 3, 4, 5, 6, 7, 8, 9})
frozenset({'r', 'b', 'u', 'o', 'n'})
frozenset({'終止', '啊實打實', '阿薩'})
{frozenset({'終止', '啊實打實', '阿薩'}): '123'}