Python基本數據類型之集合

一、集合的定義和特性

1、集合的定義:使用大括號 { } 或者 set() 函數創建集合

set1 = {"wangdoudou", 123, ("hello", 456)}

輸出結果:{123, ('hello', 456), 'wangdoudou'}

# 使用set()方法創建時裏面只能有一個元素

set2 = set("wangdoudou") 

輸出結果:{'a', 'w', 'g', 'n', 'd', 'o', 'u'}

set3  = set(["wangdoudou", 123, ("hello", 456)])

輸出結果:{123, ('hello', 456), 'wangdoudou'}

 

2、特性

(1)、集合(set)是無序的

(2)、由不同的元素組成

(3)、元素類型必須是不可變的:數字,字符串,元組

(4)、創建一個空集合必須用 set() 而不是 { },因爲 { } 是用來創建一個空字典

(5)、集合去重性,相同的元素只保留一個

(6)、集合是可變類型

 

3、定義不可變集合:使用frozenset()方法

testset = frozenset("hello")

 

二、集合類的函數&方法

1、add(self, *args, **kwargs):添加元素,只能添加一個值

代碼示例:

testset = {7, 1, 6, 2, 5, 3, 4}
print("testset原始的集合內容是:", testset)
testset.add("wangdoudou")
print("testset添加wangdoudou元素後的結果是:", testset)
testset.add(7)
print("testset添加7元素後的結果是:", testset)

輸出結果:

 

2、clear(self, *args, **kwargs):清空集合

代碼示例:

testset = {7, 1, 6, 2, 5, 3, 4}
print("testset原始的集合內容是:", testset)
testset.clear()
print("清空後的testset=", testset)

輸出結果:

3、copy(self, *args, **kwargs):

代碼示例:

testset = {7, 1, 6, 2, 5, 3, 4}
print("testset原始的集合內容是:", testset)
testset2 = testset.copy()
print("拷貝後的集合testset2爲:", testset2)

輸出結果:

4、difference(self, *args, **kwargs):求兩個集合的差集,也就是左方獨有的元素,也可用減號運算符操作

代碼示例:

set1 = {1, 4, 6, 9, 18}
print("set1=", set1)
set2 = {2, 4, 6, 13, 21}
print("set2=", set2)
set3 = set1.difference(set2)
print("使用difference()函數求差集的結果是:", set3)
set4 = set2 - set1
print("使用-減號運算符求差集的結果是:", set4)

輸出結果:

5、difference_update(self, *args, **kwargs):先求兩個集合的差集,然後將差集賦值更新到原集合中

代碼示例:

set1 = {1, 4, 6, 9, 18}
print("set1=", set1)
set2 = {2, 4, 6, 13, 21}
print("set2=", set2)
set1.difference_update(set2)
print("使用difference_update()函數將差值更新到集合中:", set1)

輸出結果:

6、discard(self, *args, **kwargs):刪除指定元素,不管元素存不存在都可以

代碼示例:

testset = {7, 1, 6, 2, 5, 3, 4}
print("testset原始的集合內容是:", testset)
testset.discard("sss")
print("testset刪除不存在的元素的結果是:", testset)
testset.discard(5)
print("testset刪除存在的元素的結果是:", testset)

輸出結果:

 

7、intersection(self, *args, **kwargs):求兩個集合的交集,相當於 集合1&集合2

代碼示例:

set1 = {1, 4, 6, 9, 18}
print("set1=", set1)
set2 = {2, 4, 6, 13, 21}
print("set2=", set2)
set3 = set1.intersection(set2)
print("使用intersection()函數求交集的結果是:", set3)
set4 = set1 & set2
print("使用&運算符求交集的結果是::", set3)

輸出結果:

 

8、intersection_update(self, *args, **kwargs):求兩個集合的交集並將交集更新到集合中

代碼示例:

set1 = {1, 4, 6, 9, 18}
print("set1=", set1)
set2 = {2, 4, 6, 13, 21}
print("set2=", set2)
set1.intersection_update(set2)
print("使用intersection_update()將交集更新到集合中;", set1)

輸出結果:

 

9、isdisjoint(self, *args, **kwargs):判斷兩個集合是否有交集,有,返回False,沒有,返回True

代碼示例:

set1 = {1, 4, 6, 9, 18}
print("set1=", set1)
set2 = {2, 4, 6, 13, 21}
print("set2=", set2)
print("使用isdisjoint()函數判斷兩個集合是否有交集:", set1.isdisjoint(set2))

輸出結果:

 

10、issubset(self, *args, **kwargs):判斷集合1是否爲集合2的子集,相當於判斷 集合1 <= 集合2

代碼示例:

set1 = {1, 4, 6, 9, 18}
print("set1=", set1)
set2 = {2, 4, 6, 13, 21}
print("set2=", set2)
print("使用issubset()函數判斷兩個集合的父子集關係:", set1.issubset(set2))

輸出結果:

 

11、issuperset(self, *args, **kwargs):判斷集合1是否爲集合2的父集 相當於判斷 集合1 >= 集合2

代碼示例:

set1 = {1, 4, 6, 9, 18}
print("set1=", set1)
set2 = {2, 4, 6, 13, 21}
print("set2=", set2)
print("issuperset()函數判斷兩個集合的父子集關係:", set1.issuperset(set2))

輸出結果:

 

12、pop(self, *args, **kwargs):隨機刪除

代碼示例:

testset = {7, 1, 6, 2, 5, 3, 4}
print("testset原始的集合內容是:", testset)
testset.pop()
print("testset隨機刪除後的結果是:", testset)

輸出結果:

 

13、remove(self, *args, **kwargs):指定元素刪除,指定的元素必須在集合中,否則會報錯

代碼示例:

testset = {7, 1, 6, 2, 5, 3, 4}
print("testset原始的集合內容是:", testset)
testset.remove(2)
print("testset移除元素2之後的內容是:", testset)

輸出結果:

 

14、symmetric_difference(self, *args, **kwargs):求兩個集合的交叉補集(將兩個集合合併後去除相同的元素)

相當於 集合1 ^ 集合2

代碼示例:

set1 = {1, 4, 6, 9, 18}
print("set1=", set1)
set2 = {2, 4, 6, 13, 21}
print("set2=", set2)
set3 = set1.symmetric_difference(set2)
print("使用symmetric_difference()函數求交叉補集的結果是:", set3)
set4 = set1 ^ set2
print("使用^異或運算符計算集合的交叉補集的結果是:", set4)

輸出結果:

15、symmetric_difference_update(self, *args, **kwargs):求兩個集合的交叉補集並將交叉補集更新到集合中

代碼示例:

set1 = {1, 4, 6, 9, 18}
print("set1=", set1)
set2 = {2, 4, 6, 13, 21}
print("set2=", set2)
set1.symmetric_difference_update(set2)
print("使用symmetric_difference_update()函數將交叉補集更新到集合中:", set1)

輸出結果:

 

16、union(self, *args, **kwargs):求兩個集合的並集,相當於 集合1 | 集合2

代碼示例:

set1 = {1, 4, 6, 9, 18}
print("set1=", set1)
set2 = {2, 4, 6, 13, 21}
print("set2=", set2)
set3 = set1.union(set2)
print("使用union()函數求兩個集合的並集的結果是:", set3)
set4 = set1 | set2
print("使用|運算符求兩個集合的並集的結果是:", set3)

輸出結果;

 

17、update(self, *args, **kwargs):更新集合,參數爲可迭代序列

代碼示例:

set1 = {1, 4, 6, 9, 18}
print("set1=", set1)
set2 = {2, 4, 6, 13, 21}
print("set2=", set2)
set1.update(set2)
print("使用update()函數更新集合:", set1)

輸出結果:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章