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