集合set()
集合的三个特点:
- 无序性:元素没有顺序
- 确定性:给定一个集合,任给一个元素,该元素或者属于或者不属于该集合,二者必居其一,不允许有模棱两可的情况出现。
- 互异性:不存在重复元素,元素是唯一的
- 可变的数据类型
创建集合
# 创建空集合
set1 = set()
print(set1)
# 创建集合
set2 = {1,2,3,4,5,66}
print(set2)
# 将列表转换为集合
a=[1,1,2,3,4,5,5,24,2,4]
set3 = set(a)
print(set3)
运行结果:
注意
1.集合里面只能放不可变的数据类型(集合中的元素必须是hashable
类型),通常不可变类型都是hashable
类型,如整数、浮点、字符串、元组等,而可变类型都不是hashable
类型,因为可变类型无法确定唯一的ID值,所以也就不能放到集合中。集合本身也是可变类型,所以集合不能够作为集合中的元素
2.集合底层使用的哈希存储,可变的容器都不能计算哈希码
集合的运算
Python为集合类型提供了非常丰富的运算符,主要包括:成员运算、交集运算、并集运算、差集运算、比较运算(相等性、子集、超集)等。
set1 = {1, 3, 5, 7, 9}
set2 = {2, 4, 6, 8, 9}
# 交集
print(set1 & set2)
# 并集
print(set1 | set2)
# 差集
print(set1 - set2)
# 对称差
print(set1 ^ set2)
# 真子集
print(set1 < set2)
# 子集
print(set1 <= set2)
# 超集 set1包含set2,且set1中还有set2没有的元素
print(set1 > set2)
set3 = {1, 3, 5, 7, 9, 10}
print(set3 > set1)
运行结果:
集合的添加与删除
set.add() / set .pop()方法都是添加到集合随机位置或随机删除元素
set1 = {"apple", 'banana', 'orange'}
set1.add('moon')
print(set1)
# set1.pop() # 有返回值
# print(set1)
set1.discard('moon') # 删除指定元素
print(set1)
运行结果: