1. 程式人生 > >Python基礎之集合set

Python基礎之集合set

n) true 列表 之間 4.4 自動 去重 bar 可變集合

集合是無序的,不重復的數據集合,它裏面的元素是可哈希的(不可變類型),
但是集合本身是不可哈希的(所以集合做不了字典的鍵)的。

以下是集合最重要的兩點:

(1)去重,把一個列表變成集合,就自動去重了。

(2)關系測試,測試兩組數據之間的交集,差集,並集等關系。

1. 集合的創建

set1 = set({1, 2, "barry"})
set2 = {1, 2, "barry"}
print(set1, set2)

執行結果為:

{‘barry‘, 1, 2} {‘barry‘, 1, 2}

2. 集合的增

2.1 add()

set1 = {"a", "b", "c"}
set1.add("d")
print(set1)

執行結果為:

{‘b‘, ‘a‘, ‘d‘, ‘c‘}

2.1 update()

update():叠代著增加

set1 = {"a", "b", "c"}
set1.update("A")
print(set1)
set1.update("B")
print(set1)
set1.update([1, 2, 3])
print(set1)

執行結果為:

{‘c‘, ‘b‘, ‘A‘, ‘a‘}
{‘A‘, ‘a‘, ‘B‘, ‘c‘, ‘b‘}
{1, 2, 3, ‘A‘, ‘a‘, ‘B‘, ‘c‘, ‘b‘}

3. 集合的刪

set1 = {"a", "b", "c", "d", "e"}
set1.remove("a")    #刪除一個元素
print(set1)

set1.pop()          #隨機刪除一個元素
print(set1)

set1.clear()        #清空集合
print(set1)

del set1            #刪除集合
print(set1)

4. 集合的其他操作

4.1 交集(& 或者 intersection)

set1 = {1, 2, 3, 4, 5}
set2 = {4, 5, 6, 7, 8}
print(set1 & set2)              #{4, 5}
print(set1.intersection(set2))  #{4, 5}

4.2 並集(| 或者 union)

set1 = {1, 2, 3, 4, 5}
set2 = {4, 5, 6, 7, 8}
print(set1 | set2)          #{1, 2, 3, 4, 5, 6, 7, 8}
print(set2.union(set1))     #{1, 2, 3, 4, 5, 6, 7, 8}

4.3 差集(- 或者 differene)

set1 = {1, 2, 3, 4, 5}
set2 = {4, 5, 6, 7, 8}
print(set1 - set2)              #{1, 2, 3}
print(set1.difference(set2))    #{1, 2, 3}

4.4 反交集(^ 或者 symmetric_difference)

set1 = {1, 2, 3, 4, 5}
set2 = {4, 5, 6, 7, 8}
print(set1 ^ set2)                      #{1, 2, 3, 6, 7, 8}
print(set1.symmetric_difference(set2))  #{1, 2, 3, 6, 7, 8}

4.5 子集與超集

set1 = {1, 2, 3}
set2 = {1, 2, 3, 4, 5, 6}

print(set1 < set2)          #True
print(set1.issubset(set2))  #True
#這兩個相同,都是說明set1是set2子集

print(set2 > set1)          #True
print(set2.issuperset(set1))#True
#這兩個相同,都是說明set2是set1超集

5. frozenset不可變集合,讓集合變成不可變類型

s = frozenset("barry")
print(s, type(s))   

執行結果為:

frozenset({‘b‘, ‘a‘, ‘r‘, ‘y‘}) <class ‘frozenset‘>

Python基礎之集合set