內容簡述:
- 1、集合(Set)
1、集合(Set)
列表元組通過索引查詢元素,字典通過鍵來查詢元素,而接下來的集合無法去索引某個具體的元素,集合裡的元素「無序」,且「自動去重」,使用「{}大括號」包裹元素,使用逗號進行分隔。另外有一點要注意:建立
空集合
必須使用set()函式
來構建,而不能直接用{},直接一個{}
的話,會直接建立一個空字典
,而 不是一個空集合。
① 集合的基本操作
程式碼示例如下:
# 1.集合建立
set_1 = set() # 建立一個空集合
set_2 = {1, 2, 3, 4, 5, 1, 2} # 普通方式建立集合,重複元素會被自動刪除
set_3 = set('12345') # 通過字串構建,注意元素無序
set_4 = frozenset({1,2,3,4}) # 建立一個不可變集合
print("1.集合建立:")
print(set_1)
print(set_2)
print(set_3)
print(set_4)
# 2.判斷元素是否在集合中
print("\n2.元素是否在集合中:")
print('集合中有6這個元素:%s' % (6 in set_1)) # 判斷集合中是否有此元素
print('集合中沒有7這個元素:%s' % (7 not in set_1)) # 判斷集合中是否有此元素
# 3.集合增刪元素
print("\n3.增刪集合中的元素:")
set_1.add(6)
print("往集合中插入一個元素6後:%s" % set_1)
set_1.remove(6) # 如果刪除的元素不存在會報錯,建議先判斷下是否存在運算再刪除
print("往集合中刪除一個元素6後:%s" % set_1)
set_1.discard(6) # 刪除集合中的一個元素,如果元素不存在,不執行任何操作
print("刪除集合中的一個元素6後:%s" % set_1)
set_2.pop() # 無序隨機刪除並返回任意一個集合元素,集合為空會引發KeyError
print("隨機彈出集合中的一個元素後:%s" % set_2)
# 4.集合遍歷
print("\n4.遍歷集合中的元素:\n set_2 =", end='')
for data in set_2:
print(data, end='\t')
# 5.清空集合
set_2.clear()
print("\n\n5.清空集合中的元素 :%s" % set_2)
複製程式碼
執行結果如下:
1.集合建立:
set()
{1, 2, 3, 4, 5}
{'5', '3', '1', '4', '2'}
frozenset({1, 2, 3, 4})
2.元素是否在集合中:
集合中有6這個元素:False
集合中沒有7這個元素:True
3.增刪集合中的元素:
往集合中插入一個元素6後:{6}
往集合中刪除一個元素6後:set()
刪除集合中的一個元素6後:set()
隨機彈出集合中的一個元素後:{2, 3, 4, 5}
4.遍歷集合中的元素:
set_2 =2 3 4 5
5.清空集合中的元素 :set()
複製程式碼
② 集合運算相關的操作
程式碼示例如下:
set_1 = {'a', 'b', 'c', 'd', 'e', 'f'}
set_2 = set('cdefgh')
set_3 = set('ab')
# 進行數學集合運算
# 子集,集合為某個集合的一部分,使用操作符<,或issubset()進行判斷
print('集合set_2是集合set_1的子集:%s' % (set_2 < set_1))
print('集合set_3是集合set_1的子集:%s' % (set_3.issubset(set_1)))
# 並集,兩個集合所有元素構成的集合,使用操作符 | 或 union() 函式完成
print("集合set_1和集合set_2的並集:%s" % (set_1 | set_2))
print("集合set_1和集合set_2的並集:%s" % (set_1.union(set_2)))
# 交集,同時存在於兩個集合中的元素構成的集合,使用操作符 & 或 intersection() 函式完成
print("集合set_1和集合set_2的交集:%s" % (set_1 & set_2))
print("集合set_1和集合set_2的交集:%s" % (set_1.intersection(set_2)))
# 差集,集合裡有另一個集合裡沒有的元素構成的集合,使用操作符 - 或 difference() 函式完成
print("集合set_1和集合set_2的差集:%s" % (set_1 - set_2))
print("集合set_1和集合set_2的差集:%s" % (set_1.difference(set_2)))
# 對稱差,只屬於其中一個集合而不屬於另一個集合的元素組成的集合
# 或者理解成全集除去交集部分元素後剩下的元素組成的集合
# 使用操作符 ^ 或 symmetric_difference() 函式完成
print("集合set_1和集合set_2的對稱差:%s" % (set_1 ^ set_2))
print("集合set_1和集合set_2的對稱差:%s" % (set_1.symmetric_difference(set_2)))
複製程式碼
執行結果如下:
集合set_2是集合set_1的子集:False
集合set_3是集合set_1的子集:True
集合set_1和集合set_2的並集:{'h', 'b', 'd', 'c', 'f', 'g', 'e', 'a'}
集合set_1和集合set_2的並集:{'h', 'b', 'd', 'c', 'f', 'g', 'e', 'a'}
集合set_1和集合set_2的交集:{'c', 'e', 'd', 'f'}
集合set_1和集合set_2的交集:{'c', 'e', 'd', 'f'}
集合set_1和集合set_2的差集:{'b', 'a'}
集合set_1和集合set_2的差集:{'b', 'a'}
集合set_1和集合set_2的對稱差:{'h', 'b', 'g', 'a'}
集合set_1和集合set_2的對稱差:{'h', 'b', 'g', 'a'}
複製程式碼
如果本文對你有所幫助,歡迎
留言,點贊,轉發
素質三連,謝謝?~