1. 程式人生 > >關於集合set

關於集合set

但是 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