關於集合set
阿新 • • 發佈:2018-04-22
但是 class 判斷 clas ren 刪除元素 pda symmetric 等價
把不同的元素組成一起形成集合
0.集合的主要作用:
(1)去重, 把一個列表變成集合,就自動去重了
(2)關系測試,測試兩組數據之間的交集,並集,差集等關系
1.如何創建一個集合
集合的創建方法只有一種,如:
a=set([1,2,3])
b=frozenset(‘tony‘)
set()函數內部只能包含一個對象,這個對象所包含的值必須是可哈希的,即不可變類型(整型,字符串,元組,frozenset),不可以c=set([[1,2],5,‘tony‘]),會報錯。同時set是不可哈希的,frozenset是可哈希的,但是內部元素都必須是可哈希的
一個集合內部的元素不可以是重復的,所以當把一個序列變為集合時,set()函數會去除重復的元素
a=[1,2,3] b=set(a) print(b)#輸出{1,2,3} c=[1,2,3,1] d=set(c) print(d)#輸出{1,2,3}
2.集合的分類
可變集合(set):可以添加和刪除元素,是非可哈希的,不能用作字典的鍵,也不能做其他集合的元素
不可變集合(frozenset):與上面相反
這兩個集合的關系就像列表和元組的關系
3.訪問集合
由於集合本身是無序的,所以不能為集合創建索引或切片操作,只能循環遍歷或使用in、not in來訪問或判斷集合元素。
s=set(‘chen‘) print(‘c‘ in s)#輸出True print(‘a‘in s)#輸出False
s=set(‘chen‘) for i in s: print(i)
#輸出
h
n
c
e
4.更新集合
可使用以下方法來更新集合:
s.add()
s.update()
s.remove()
s.pop()
s.clear()
s=set([1,2,3,4]) s.add(‘chen‘) print(s)#輸出{1, 2, 3, 4, ‘chen‘} s.update(‘tony‘) print(s)#輸出{1, 2, 3, 4, ‘y‘, ‘n‘, ‘chen‘, ‘o‘, ‘t‘}
s.remove(‘chen‘) print(s)#輸出{1, 2, 3, 4, ‘y‘, ‘n‘, ‘o‘, ‘t‘} a=s.pop() print(s,a)#輸出{2, 3, 4, ‘y‘, ‘n‘, ‘o‘, ‘t‘} 1
s.clear()
print(s)#輸出set()
5.集合類型操作符
1 in ,not in
2 集合等價與不等價(==, !=)
3 關系測試,測試兩組數據之間的交集(&),並集(|),差集(-),對稱差集(^),超集(>),子集(<)等關系
a=set([1,2,3,4,5]) b=set([4,5,6,7,8]) #交集(屬於a,也屬於b) print(a.intersection(b)) print(a&b)#{4, 5} #並集(屬於a,或屬於b) print(a.union(b)) print(a|b)#{1, 2, 3, 4, 5, 6, 7, 8} #差集(屬於一個集合但不屬於另一個集合) print(a.difference(b)) print(a-b)#{1, 2, 3} print(b.difference(a)) print(b-a)#{8, 6, 7} #對稱差集(也稱為反向交集)(除去兩個集合共有的元素之後形成的集合) print(a.symmetric_difference(b)) print(a^b)#{1, 2, 3, 6, 7, 8} a=set([1,2,3,4,5]) b=set([1,2,3,4,5]) #超集(a是否完全包含b) print(a.issuperset(b))#True print(a>b)#False print(a>=b)#True #子集(b是否完全被a包含) print(b.issubset(a))#True print(b<a)#False print(b<=a)#True
關於集合set