集合
1.什么是集合?(set)
集合是容器型数据类型,将{}作为容器的标志,里面多个元素用逗号隔开: {元素1, 元素2, 元素3, …}
集合是可变的(支持增删改); 集合是无序的
集合中元素是不可变并且唯一的
2.空集合
empty = set() # {} 是空字典
3.非空集合
set1 = {1, 23, 34}
set2 = {(1, 2), 3, 4}
# set3 = {[1, 2], 3, 4} # 列表不能作为集合的元素
set4 = {1, 2, 3, 1, 4, 1}
print(set4) # {1, 2, 3, 4}
print({1, 2, 3} == {2, 3, 1}) # True (说明集合无序)
4.集合中元素的增删改查
a. 查 - 集合没有办法直接获取单个元素,只能遍历
for 变量 in 集合:
循环体
# 变量取到的就是集合中的每个元素
b. 增
集合.add(元素) - 在集合中添加指定元素
集合.update(序列) - 将序列中的元素全部添加到集合
nums.add(100)
print(nums) # {34, 100, 23, 89, 90}
nums.update('abc')
print(nums) # {34, 100, 'c', 'b', 23, 89, 90, 'a'}
nums = set()
nums.update({'a': 10, 'b': 20})
print(nums) # {'a', 'b'}
c. 删
集合.remove(元素) - 删除集合中指定的元素(元素不存在会报错)
集合.discard(元素) - 删除集合中指定的元素(元素不存在不会报错)
nums = {10, 89, 76, 90, 34}
# nums.remove(10)
nums.discard(10)
print(nums)
# nums.remove(100) # 报错
nums.discard(100) # 不报错
d.改 - 集合无法修改元素
5.数学集合运算
python中的集合支持数学集合运算:&(求交集)、|(求并集)、-(求差集)、对称差集(^)、>/<(判断是否是真子集)
set1 = {1, 2, 3, 4, 5}
set2 = {4, 5, 6, 7, 8, 9}
a. 交集: 求两个集合的公共部分
print(set1 & set2) # {4, 5}
b. 并集:两个集合合并成一个集合
print(set1 | set2) # {1, 2, 3, 4, 5, 6, 7, 8, 9}
c. 差集:集合1 - 集合2 集合1中除了集合2剩余的部分
print(set1 - set2) # {1, 2, 3}
print(set2 - set1) # {8, 9, 6, 7}
d.对称差集:去掉两个集合公共的部分剩下的部分
print(set1 ^ set2) # {1, 2, 3, 6, 7, 8, 9}
e.真子集
集合1 > 集合2 - 判断集合2是否是集合1的真子集
集合1 < 集合2 - 判断集合1是否是集合2的真子集
print({100, 200, 300, 400} > {10, 20}) # False
print({1, 10, 20} > {10, 20}) # True
print({10, 20} > {10, 20}) # False