豬行天下之Python基礎——3.4 集合

coder-pig發表於2019-04-03

內容簡述:

  • 1、集合(Set)

1、集合(Set)

列表元組通過索引查詢元素,字典通過鍵來查詢元素,而接下來的集合無法去索引某個具體的元素,集合裡的元素「無序」,且「自動去重」,使用「{}大括號」包裹元素,使用逗號進行分隔。另外有一點要注意:建立 空集合 必須使用 set()函式 來構建,而不能直接用{},直接一個{}的話,會直接建立一個空字典,而 不是一個空集合


① 集合的基本操作

程式碼示例如下

# 1.集合建立
set_1 = set() # 建立一個空集合
set_2 = {1234512# 普通方式建立集合,重複元素會被自動刪除
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()
{12345}
{'5''3''1''4''2'}
frozenset({1234})
2.元素是否在集合中:
集合中有6這個元素:False
集合中沒有7這個元素:True
3.增刪集合中的元素:
往集合中插入一個元素6後:{6}
往集合中刪除一個元素6後:set()
刪除集合中的一個元素6後:set()
隨機彈出集合中的一個元素後:{2345}
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'}
複製程式碼

如果本文對你有所幫助,歡迎
留言,點贊,轉發
素質三連,謝謝?~


相關文章