"""
認識集合
set是一個無序且不重復的元素集合。
集合對象是一組無序排列的可哈希的值,集合成員可以做字典中的鍵。
集合支持用in和not in操作符檢查成員,由len()內建函數(shù)得到集合的基數(shù)(大小), 用 for 循環(huán)迭代集合的成員。
但是因為集合本身是無序的,不可以為集合創(chuàng)建索引或執(zhí)行切片(slice)操作,也沒有鍵(keys)可用來獲取集合中元素的值。set和dict一樣,只是沒有value,相當于dict的key集合,由于dict的key是不重復的,且key是不可變對象因此set也有如下特性:
不重復
元素為不可變對象""""""
1,聲明一個集合"""s = set()s = {11,22,33,44}#注意在創(chuàng)建空集合的時候只能使用s=set(),因為s={}創(chuàng)建的是空字典a=set('boy')#字符串b=set(['y','b','o','o'])#列表
c=set({"k1":'v1','k2':'v2'})#字典
d={'k1','k2','k2'}
e={('k1','k2','k2')}#元組
print(a,type(a))
print(b,type(b))
print(c,type(c))
print(d,type(d))
print(e,type(e))
集合的常用操作函數(shù)
"""
2,add用于給集合添加元素,如果添加的元素在集合中已存在,則不執(zhí)行任何操作。
語法:set.add(el)
"""set1 = {"ab","cd","ef"}
set1.add("ab")#已有該值,所以不做任何改變
print(set1)set1.add("gh")#插入是無序的.print(set1)
注意,add的位置是隨機的,每次輸出的set1的順序都不一樣。多運行幾次,查看結果你就會發(fā)現(xiàn)這種現(xiàn)象。原因就在于set是無序的。
"""
3,clear清空集合元素set.clear()
"""set3 = {"ab","cd","ef"}
set3.clear()print(set3)
注意,這里是返回“set()”,不是{}。
"""
4,copy復制一個集合"""
set4 = {"ab","cd","ef"}
set5 = set4.copy()
print(set5)
注意:這里注意,輸出的set5一樣是無序的。集合每次輸出的結果都可能不一樣。所以,充分理解集合是無序這一層含義吧!
"""
5,difference用于返回集合的差集,即返回的集合元素包含在第一個集合中,但不包含在第二個集合(方法的參數(shù))中。
語法:set1.difference(set2)
"""
set5 = {"ab","cd","ef"}
set6 = {"ab","cd","gh","jk"}
set7 = {"ab","cd","ef"}
tem1 = set5.difference(set6)print(tem1)
tem2= set6.difference(set5)
print(tem2)
tem3= set5.difference(set7)
print(tem3)
通過tem1,tem2的結果輸出,不難理解:difference返回的是和被比較集合的差。即,除去共同有的,就是返回結果;返回的結果取決于誰在先。如果兩個集合相等,則返回:set()。
"""
6,difference_update用于移除兩個集合中都存在的元素。不返回新對象,直接修改原集合。
語法:set1.difference_update(set2)
被修改的是set1,set2不會被修改"""
set5 = {"ab","cd","ef"}
set6 = {"ab","cd","gh","jk"}
set7 ={"ab","cd","ef"}
set5.difference_update(set6)
print(set5)
print(set6)
set6.difference_update(set5)
print(set6)print(set5)
set5.difference_update(set7)
print(set5)
tips:difference 和difference_update的區(qū)別在于有沒有返回新對象。
"""
7,discard 刪除指定的元素。刪除不存在的元素不會報錯set.discard(value)
"""set7 = {"ab","cd","gh","jk"}
set7.discard("gh")
print(set7)set7.discard("go")#刪除不存在的元素不報錯print(set7)
"""
8,remove刪除指定的元素。刪除不存在的元素會報錯"""
set8 = {"ab","cd","gh","jk"}
set8.remove("gh")
print(set7)
set8.remove("go")#報錯print(set7)
tips:discard 和remove的區(qū)別是會不會報錯。
下篇繼續(xù)講set的常用函數(shù)