Python基礎知識之集合

集合的描述

集合是無序的、不重複的數據集合,它自己是可變的,但裏面的元素是不可變類型(這裏要注意,即便是含有列表的元組也不能夠,必須是徹底不可變類型)python

建立集合

建立集合可使用大括號{}來建立,元素間用逗號分隔,可是不能用它來建立空集合,由於{}建立的是空字典。函數

如 set1 = {1,2,3}

也可使用set()函數來建立集合,其中的參數爲可迭代對象便可(好比字符串、列表、元組、迭代器等),前提是元素中必須是不可變類型。code

i = 'abcdefg'
a =set(i)
print(type(a))
print(a)
----------
<class 'set'>
{'b', 'a', 'f', 'd', 'g', 'e', 'c'}

增 add update

add(elem)
能夠向集合中添加新元素,若是該元素已存在則不作任何改變對象

s1 = {1,2,3}
s1.add('qwe')
print(s1)
----------
{1, 2, 3, 'qwe'}

update(*others)
可將其餘可迭代對象(好比字符串、列表、元組)添加到集合中,自動刪除重複元素rem

s1 = {1,2,3}
it = [3,4,5]
s1.update(it)
print(s1)
----------
{1, 2, 3, 4, 5}

刪 remove(elem) discard(elem) pop() clear()

remove(elem)
將元素從集合中刪除,若是該元素不存在則會報錯。字符串

s1 = {1,2,3}
s1.remove(2)
print(s1)
----------
{1, 3}

discard(elem)
和remove同樣能夠將元素從集合中刪除,區別是若是元素不存在則不會報錯。it

s1 = {1,2,3}
s1.discard(6)
print(s1)
----------
{1, 2, 3}

pop()
從集合中隨機刪除一個元素,而且返回該元素,若是集合爲空則會報錯io

s1 = {1,2,3}
a = s1.pop()
print(s1)
print(a)
----------
{2, 3}
1

clear()
用於清空集合。class

幾種運算方法

對於集合來說有幾種運算方法:交集、並集、差集、反交集、子集、超集
下面用代碼來詳細說明每種方法的用法date

s1 = {1,2,3,4,5}
s2 = {3,4,5,6,7}
print('交集:',s1 & s2) #可用&或者intersection,輸出一個新的集合,包含共同擁有的元素
print('交集:',s1.intersection(s2))
print('並集:',s1 | s2) #可用|或者union,輸出一個新的集合,包含兩個集合中全部的元素(去重)
print('並集:',s1.union(s2))
print('差集:',s1 - s2) #可用 - 或者difference,輸出一個新的集合,包含前一個集合中除去共有的元素
print('差集:',s1.difference(s2))
print('反交集:',s1 ^ s2) #可用^或者 symmetric_difference,輸出一個新的集合,包含兩個集合中除去共有的元素後剩餘的全部元素
print('反交集:',s1.symmetric_difference(s2))
交集: {3, 4, 5}
    交集: {3, 4, 5}
    並集: {1, 2, 3, 4, 5, 6, 7}
    並集: {1, 2, 3, 4, 5, 6, 7}
    差集: {1, 2}
    差集: {1, 2}
    反交集: {1, 2, 6, 7}
    反交集: {1, 2, 6, 7}

子集與超集,簡單來說就是一個集合中的元素包含另外一個集合中全部的元素,則「大的」集合叫超集,「小的」叫子集

s1 = {1,2,3}
s2 = {1,2,3,4,5}
print(s1.issubset(s2)) #輸出爲True,s1是s2的子集
print(s2.issuperset(s1))#輸出爲True,s2是s1的超集
----------
    True
    True

另外,使用frozenset('集合名'),能夠把集合變成不可變集合

相關文章
相關標籤/搜索