python集合,簡稱集
由任意個元素構成的集體。高階語言都實現了這個非常重要的資料結構型別。python中,它是可變的、無序的、不重複的元素的集合。
集合的初始化
set()->newemptysetobject
set(iterable)->newsetobject
s1=set()
s2=set(range(5))
s3=set([1,2,3])
s4=set('abcdabcd')
s5={}#這是什麼? 這是字典
s6=s7=
元素性質
去重:在集合中,所有元素必須相異
無序:因為無序,所以不可索引
可雜湊:python集合中的元素必須可以hash,即元素都可以使用內建函式hash
目前學過不可hash的型別有:list、set、bytearray
可迭代:set中雖然元素不一樣,但元素都可以迭代出來
增加add(elem)
增加乙個元素到set中
如果元素存在,什麼都不做
update(*others)
合併其他元素到set集合中來
引數others必須是可迭代物件
就地修改
刪除remove(elem)
從set中移除乙個元素
從set中移除乙個元素
元素不存在,什麼都不做
移除並返回任意的元素。為什麼是任意元素?#因為字典無序
空集返回keyerror異常
clear()
移除所有元素
修改集合型別沒有修改。因為元素唯一。如果元素能夠加入到集合中,說明它和別的元素不一樣。
所謂修改,其實就是把當前元素改成乙個完全不同的元素,就是刪除加入新元素。
索引非線性結構,不可索引。
遍歷只要是容器,都可以遍歷元素。但是效率都是o(n)
成員運算子in
可雜湊數值型int、float、complex
布林型true、false
字串string、bytes
tuple
none
以上都是不可變型別,都是可雜湊型別,hashable
set的元素必須是可hash的。
集合概念
全集所有元素的集合。例如實數集,所有實數組成的集合就是全集
子集subset和超集superset
乙個集合a所有元素都在另乙個集合b內,a是b的子集,b是a的超集
真子集和真超集
a是b的子集,且a不等於b,a就是b的真子集,b是a的真超集
並集:多個集合合併的結果
交集:多個集合的公共部分
差集:集合中除去和其他集合公共部分
並集
將兩個集合a和b的所有的元素合併到一起,組成的集合稱作集合a與集合b的並集
union(*others)返回和多個集合合併後的新的集合
|運算子過載,等同union
update(*others)和多個集合合併,就地修改
|=等同update
交集
集合a和b,由所有屬於a且屬於b的元素組成的集合
intersection(*others)返回和多個集合的交集
&等同intersection
intersection_update(*others)獲取和多個集合的交集,並就地修改
&=等同intersection_update
差集集合a和b,由所有屬於a且不屬於b的元素組成的集合
difference(*others)返回和多個集合的差集
-等同difference
difference_update(*others)獲取和多個集合的差集並就地修改
-=等同difference_update
s5 =
s6 =
print(s5 - s6)
print(s5.difference(s6))
對稱差集
集合a和b,由所有不屬於a和b的交集元素組成的集合,記作(a-b)∪(b-a)
symmetric_differece(other)返回和另乙個集合的對稱差集
^等同symmetric_differece
symmetric_differece_update(other)獲取和另乙個集合的對稱差集並就地修改
^=等同symmetric_differece_update
s7 =
s8 =
print(s7 ^ s8)
print(s7.symmetric_difference(s8))
其它集合運算
issubset(other)、<=判斷當前集合是否是另乙個集合的子集
set1=判斷當前集合是否是other的超集
set1>set2判斷set1是否是set2的真超集
isdisjoint(other)當前集合和另乙個集合沒有交集,沒有交集,返回true
馬哥部落格作業第四周
1.編寫指令碼 root bin systeminfo.sh,顯示當前主機系統資訊,包括主機名 ipv4位址 作業系統版本 核心版本 cpu型號 記憶體大小 硬碟大小。bin bash the script is systeminfo.sh hostname hostname system cat ...
馬哥教育 第四周作業
1 統計出 etc passwd檔案中其預設shell為非 sbin nologin的使用者個數,並將使用者都顯示出來 2 查出使用者uid最大值的使用者名稱 uid及shell型別 3 統計當前連線本機的每個遠端主機ip的連線數,並按從大到小排序 4 編寫指令碼disk.sh,顯示當前硬碟分割槽中...
馬哥的linux培訓第四周作業
課程內容 各種k8s部署方式。包括minikube部署,kubeadm部署,kubeasz部署,rancher部署,k3s部署。包括開發測試環境部署k8s,和生產環境部署k8s。介紹主要的k8s資源的使用配置和命令。包括configmap,pod,service,replicaset,namespa...