集合(set){}
空的時候是默認爲字典,有值就是集合python
數學概念:由一個或多個肯定的元素所構成的總體叫作集合。app
特徵iphone
1.肯定性(元素必須可hash)測試
2.互異性(去重)spa
3.無序性(集合中的元素沒有前後之分),如集合{3,4,5}和{3,5,4}算做同一個集合。code
做用:blog
去重 把一個列表變成集合,就自動去重了ip
關係測試 測試兩組數據之間的交集、差集和並集rem
關係運算數學
&.&=:交集
iphone7 = {"lily","jack","peiqi","shanshan"} iphone8 = {"rose","nicole","lily","shanshan","lucy"} print(iphone7 & iphone8)#交集
輸出
{'lily', 'shanshan
|,|=:並集
|
set1.union(set2)
iphone7 = {"lily","jack","peiqi","shanshan"} iphone8 = {"rose","nicole","lily","shanshan","lucy"} print(iphone7|iphone8)#並集 #or print(iphone7.union(iphone8))#並集
輸出
{'nicole', 'lucy', 'shanshan', 'peiqi', 'lily', 'rose', 'jack'}
{'nicole', 'lucy', 'shanshan', 'peiqi', 'lily', 'rose', 'jack'}
-,-=:差集 (只iphone7,而沒有iphone8)
-
set1.difference(set2)
iphone7 = {"lily","jack","peiqi","shanshan"} iphone8 = {"rose","nicole","lily","shanshan","lucy"} #print(iphone7 - iphone8)#差集 #or print(iphone7.difference(iphone8))
輸出
{'jack', 'peiqi'}
^,^=:對稱差集(只iphone7oriphone8)
^
set1.symmetric_difference(set2)
iphone7 = {"lily","jack","peiqi","shanshan"} iphone8 = {"rose","nicole","lily","shanshan","lucy"} print(iphone7^iphone8)#對稱差集 #or print(iphone7.symmetric_difference(iphone8))#對稱差集
輸出
{'nicole', 'rose', 'lucy', 'jack', 'peiqi'}
{'nicole', 'rose', 'lucy', 'jack', 'peiqi'}
包含關係
in,not in:判斷某元素是否在集合內
==,!=:判斷兩個集合是否相等
兩個集合之間通常有三種關係,相交、包含、不相交。在Python中分別用下面的方法判斷:
- set1.isdisjoint(set2):判斷兩個集合是否是不相交
- set1.issuperset(set2):判斷集合是否是包含其餘集合,等同於a>=b
- set1.issubset(set2):判斷集合是否是被其餘集合包含,等同於a<=b
- se1t.difference_update(set2) :把差集的結果賦給set1
- set1.intersection_update(set2):把交集的結果賦給set1
集合的經常使用操做
列表(元組)轉成集合
l = [1,2,3,4,5,6,7,8] print(type(l)) n = set(l)#轉成集合 print(type(n))
輸出
<class 'list'>
<class 'set'>
增長
單個元素的增長 : set.add(),add的做用相似列表中的append
對序列的增長 : set.update(),update方法能夠支持同時傳入多個參數,將兩個集合鏈接起來:
s = {1,2} s.add(3)#單個增長 print(s) s.update([4,5],[3,6,7])#能夠傳入多個數據 print(s)
輸出
{1, 2, 3}
{1, 2, 3, 4, 5, 6, 7}
刪除
set.discard(x)不會拋出異常
set.remove(x)會拋出KeyError錯誤 #想刪誰,括號裏寫誰
set.pop():因爲集合是無序的,pop返回的結果不能肯定,且當集合爲空時調用pop會拋出KeyError錯誤,
set.clear():清空集合
s = {1,2,3,4,5,6,7,8,9} s.discard(10) print(s) s.discard(10)#刪除指定一個 print(s) s.pop()#隨機刪除一個 print(s) s.clear()#清空 print(s)
輸出
{1, 2, 3, 4, 5, 6, 7, 8, 9}{1, 2, 3, 4, 5, 6, 7, 8, 9}{2, 3, 4, 5, 6, 7, 8, 9}set()