Python数据类型之集合
python中数据类型集合是一组无序的、不重复的数据组成的,在使用中,最大的作用就是用来去重
创建集合可以使用set()和{a, b, c},不可以是{},这样python默认会认为这是一个字典,而不是集合。
创建集合
set01 = {"Jack", "Tom", "Toney", "Lucy", "Jack", "Lily"}
print(set01) # {"Jack", "Tom", "Toney", "Lucy", "Lily"}
print(type(set01)) # <class 'set'>
# 使用set函数创建一个空的集合
set02 = set()
print(set02) # set()
print(type(set02)) # <class 'set'>
# 错误的创建方式
set03 = {}
print(set03) # {}
print(type(set03)) # <class 'dict'>
集合常用方法
添加元素
set05 = set()
set05.add("Jack")
print(set05) # {"Jack"}
合并两个集合
合并集合会自动去掉两个集合中重复的元素,只保留一个。
set06 = {"Alex", "Andy", "Apollo", "Jack"}
set07 = {"Lucy", "Lily", "Frank"}
set06.update(set07)
print(set06) # {'Alex', 'Frank', 'Jack', 'Apollo', 'Lucy', 'Lily', 'Andy'}
# 如果update添加的是字符串,会被拆分成单个字母,需要注意哦!!
set06.update("abc")
print(set06) # {'b', 'Alex', 'Andy', 'Lily', 'a', 'Apollo', 'Lucy', 'c', 'Jack', 'Frank'}
update在使用时,可以是列表,元组等,但是不可以是字符串,否则会被拆分。
删除元素
set08 = {"Alex", "Andy", "Apollo", "Jack", "Frank"}
# remove 删除指定元素
set08.remove("Jack")
print(set08) # {'Apollo', 'Alex', 'Frank', 'Andy'}
# remove删除没有的元素会报错
set08.remove("Lily") # KeyError: 'Lily'
# 使用discard()删除指定元素
set08.discard("Jack")
print(set08) # {'Apollo', 'Alex', 'Frank', 'Andy'}
# discard删除不存在的元素
set08.discard("Lily")
print(set08) # {"Alex", "Andy", "Apollo", "Jack", "Frank"} 不会报错
# 随机删除一个元素
set08.pop()
print(set08) # {'Jack', 'Frank', 'Alex', 'Apollo'}
# 删除集合内所有的元素
set08.clear()
print(set08) # set()
判断元素是在集合内
set09 = {"Alex", "Andy", "Apollo", "Jack", "Frank"}
# 使用in进行判断
print("Jack" in set09) # True
集合的交集、并集、差集
set10 = {"Jack", "Tom", "Toney", "Lucy", "Jack", "Lily"}
set11 = set(("Jack", "Tom", "Lucy", "Taylor"))
# difference()和 ”-“ 计算两个集合的差集
print(set10.difference(set11)) # {'Lily', 'Toney'}
print(set10 - set11) # {'Lily', 'Toney'}
# 并集 union() |
print(set10.union(set11)) # {'Toney', 'Taylor', 'Tom', 'Lucy', 'Lily', 'Jack'}
print(set10 | set11) # {'Toney', 'Taylor', 'Tom', 'Lucy', 'Lily', 'Jack'}
# 交集intersection
print(set10.intersection(set11)) # {'Tom', 'Lucy', 'Jack'}
print(set10 & set11) # {'Tom', 'Lucy', 'Jack'}
# 对称差集symmetric_difference
print(set10.symmetric_difference(set11)) # {'Toney', 'Lily', 'Taylor'}
print(set10 ^ set11) # {'Toney', 'Lily', 'Taylor'}
差集: 返回在A集合当中存在B集合中不存在的元素的集合。(B集合在A集合中不存在的不做计算)
并集: 合并两个集合
交集: 计算A集合和B集合都存在的元素的集合。
对称差集: 返回A集合和B集合中互不存在的集合。(A集合的元素在B集合不存在,B集合的元素在A集合不存在)