Python語法基礎系列13-集合

集合(set)

1. 什麼是集合

集合是容器型數據類型,將{}作爲容器標誌裏面多個元素用逗號隔開: {元素1, 元素2, 元素3,…}
可變的(支持增刪改)、無序的(不支持下標操作)

集合中的元素: 不可變的,唯一的(自帶去重)

# 1.空集合
# 注意: {}表示空字典
x = {}
print(type(x))		# <class 'dict'>

# set1是一個空集合
set1 = set()

# 2.集合中的元素
set2 = {1, 2, 'hus', (10, 2)}
print(set2)

# 集合中的元素不可變
# set3 = {[1, 2], 2, 'hus'}    # TypeError: unhashable type: 'list'

# 集合中的元素是唯一的
set4 = {1, 2, 'hus', 1}
print(set4)    # {1, 2, 'hus'}

2. 元素的增刪改查

2.1 查 - 獲取集合中的元素

集合只能通過遍歷一個一個得取出所有的元素,沒有辦法單獨取出指定的一個元素

set5 = {23, 3, 5, 67, 8}
for x in set5:
    print(x)
2.2 增 - 添加元素
  • 集合.add(元素) - 在集合中添加指定元素
  • 集合.update(序列) - 將序列中的元素全部添加到集合中
set5 = {23, 3, 5, 67, 8}
set5.add(100)
print(set5)			# {67, 3, 5, 100, 8, 23}

# 將字符串中的字符全部添加到集合中
set5.update('abc')
print(set5)			# {67, 3, 5, 100, 8, 'b', 'a', 23, 'c'}

# 將字典中所有的key添加到集合中
set5.update({'name': '小明', 'age': 18})
print(set5)			# {67, 3, 5, 100, 'age', 8, 'b', 'name', 'a', 23, 'c'}
2.3 刪 - 刪除元素
  • 集合.remove(元素) - 刪除集合中指定元素,元素不存在報錯
  • 集合.discard(元素) - 刪除集合中指定元素, 元素不存在不報錯
set5 = {67, 3, 5, 100, 'age', 8, 'b', 'name', 'a', 23, 'c'}
set5.remove(100)
print(set5)			# {67, 3, 5, 'age', 8, 'b', 'name', 'a', 23, 'c'}

set5.discard(67)
print(set5)			# {3, 5, 'age', 8, 'b', 'name', 'a', 23, 'c'}
set5.discard(1000)	# 不會報錯

3. 相關操作

3.1 in 和 not in

集合的 in 和 not in 判斷的是元素是否存在

set5 = {23, 3, 5, 67, 8}
print(8 in set5)
3.2 len 和 set 函數
  • len(集合) - 獲取集合中 元素的個數
  • set(序列) - 將指定的序列轉換成集合(如果序列是字典是將字典的key作爲集合的元素)
list1 = [10, 23, 10, 25, 30, 12, 23]
list1 = list(set(list1))
print(list1)		# [10, 12, 23, 25, 30]

4. 數學集合運算

集合支持數學中的集合運算:並集(|), 交集(&), 差集(-), 對稱差集(^), >/<(包含關係)

  • 並集: 集合1 | 集合2 - 將兩個集合合併在一起產生一個新的集合

  • 交集: 集合1 & 集合2 - 獲取兩個集合的公共部分產生一個新的集合

  • 差集:集合1 - 集合2 - 獲取集合1中去掉集合2剩下的部分

  • 對稱差集:集合1 ^ 集合2 - 獲取集合1和集合2合併後去掉公共部分剩下的部分

  • 集合1 > 集合2 - 判斷集合1中是否包含集合2

    集合1 < 集合2 - 判斷集合2中是否包含集合1

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

# 1)並集: 集合1 | 集合2  ->   將兩個集合合併在一起產生一個新的集合
print(set1 | set2)   # {1, 2, 3, 4, 5, 6, 7, 8}

# 1)並集: 集合1 | 集合2  ->   將兩個集合合併在一起產生一個新的集合
print(set1 | set2)   # {1, 2, 3, 4, 5, 6, 7, 8}

# 3)差集: 集合1 - 集合2  ->   獲取集合1中去掉集合2剩下的部分
print(set1 - set2)    # {1, 2, 3}
print(set2 - set1)    # {8, 7}

# 4)對稱差集:集合1 ^ 集合2  ->  獲取集合1和集合2合併後去掉公共部分剩下的部分
print(set1 ^ set2)    # {1, 2, 3, 7, 8}

# 5) 集合1 > 集合2  - 判斷集合1中是否包含集合2
#    集合1 < 集合2  - 判斷集合2中是否包含集合1
set3 = {5, 6, 7, 8, 9}
set4 = {1, 2}
print(set3 > set4)    # False
print(set3 > {5, 6})  # True
print(set3 > {5, 6, 1})   # False
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章