1. 程式人生 > 其它 >Python基礎教程:set集合的教程

Python基礎教程:set集合的教程

一、集合型別

集合是一組無序排列的可雜湊的值(可雜湊的值->不可變),集合成員可以做字典中的鍵。但集合本身是不可雜湊的。

集合是無序沒有索引,也沒有像字典的key,所以集合不能更改元素。只能增刪查(print、for迴圈)

集合的作用:

  • 去重複元素
  • 關係測試:交集、並集、差集、反交集、超集

二、集合的操作

1.集合的建立

#set 的建立
set1 = set('abcde')  #def __init__(self, seq=()):  接受一個可迭代物件
set2 = {1,2,7,3,8,4,5,6}  #直接賦值
print(set1)
print(set2)

2.去重

#利用set去重
li = [2,4,1,3,4,5,6,7,3,3]
set1 = set(li)
li = list(set1)
 
print(li)

3.集合的增

3.1新增一個元素方法

'''
學習中遇到問題沒人解答?小編建立了一個Python學習交流群:531509025
尋找有志同道合的小夥伴,互幫互助,群裡還有不錯的視訊學習教程和PDF電子書!
'''
#新增一個元素使用set.add()
set1 = {1,2,7,3,8,4,5,6}
set1.add('a') #Add an element to a set.
print(set1)  #{1, 2, 3, 4, 5, 6, 7, 8, 'a'}

3.2迭代新增元素.接受一個可迭代物件,字串、元組、列表、字典

#迭代新增
s1 = '中國'
set1 = {1,2,7,3,8,4,5,6}
set1.update(s1) #接受一個可迭代物件。把每個元素拆開,新增到set中
print(set1)

4.集合的刪

4.1刪除一個元素從set中

#刪除一個元素從set中
set1 = {1,2,7,3,8,4,5,6,'a'}
set1.remove('a') #Remove an element from a set
print(set1)

4.2隨機刪除元素

#隨機刪,並返回被刪除元素
set1 = {1,2,7,3,8,4,5,6,'a'}
set2 = set1.pop()  #Remove and return an arbitrary set element.

print(set2)
print(set1)

5.集合的其他操作

#1.print列印
set1 = {1,2,7,3,8,4,5,6,'a'}
print(set1)
 
#2.for迴圈
for i in set1:
    print(i)
 
#3.in not in
print('a' in set1)
 
#4.len()獲取長度
print('集合長度:%d'%(len(set1)))

三、關係測試

交集

交集使用 & 或 intersection()

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

並集

並集: | 或者 union

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

差集

差集:兩者各自特有的部分。使用 - 或者 difference()

'''
學習中遇到問題沒人解答?小編建立了一個Python學習交流群:531509025
尋找有志同道合的小夥伴,互幫互助,群裡還有不錯的視訊學習教程和PDF電子書!
'''
#差集 : 兩者做差,求各自特有的部分;該集合中的元素,只屬於某一個集合,不屬於另外那個集合
set1 = {1,2,3,4,5,6,7}
set2 = {3,4,5,6,7,8,9}

#兩種方式 - 或者 difference
set3 = set1 - set2 #兩者做差,求各自特有的部分
set4 = set2 - set1 #兩者做差,求各自特有的部分
set3 = set1.difference(set2)
set4 = set2.difference(set1)

print(set3)#{1, 2}  #set1特有的部分
print(set4)#{8, 9}  #set2 特有的部分

反交集

反交集:^ 或者 symmetric_difference();該集合元素只能屬於set1或者set2,不能同時set1又屬於set2兩個集合。->拋去兩個集合相交的部分,把兩者剩餘的組成一個新集合。

#反交集:拋去他倆相同的部分,再組成一個新集合
set1 = {1,2,3,4,5,6,7}
set2 = {3,4,5,6,7,8,9}

set3 = set1 ^ set2
set3 = set1.symmetric_difference(set2)

print(set3)  #{1, 2, 8, 9}  1,2是set1特有,8,9是set2特有

子集與超集

#子集與超集 : 檢測某個集合是否是其他集合的超集或子集
#成立條件:set2必須得包含set1,並且含有set1沒有的元素。set1不含有set2中的元素
set1 = {1,2,3,4,5,6,7}
set2 = {3,4,5,6,7,8,9}
set3 = {4,3}

print(set2.issuperset(set1))  #False  >=
print(set1.issuperset(set2))  #False
print(set2.issuperset(set3))  #True
print(set3.issubset(set2))    #True  <=  set3是set2的子集