集合
一、性质
1.Python中的集合和数学中的集合很相似
2.集合是一个无序的容器型数据类型(没有下标)
3.集合是一个可变的容器型数据类型(增删)
4.集合的容器符号:{}、数据类型:set
5.集合具有无序性、确定性、互异性。(从数学角度,集合的定义为由一个或多个元素构成的确定的整体)
二、创建集合
s1 = set()
print(s1, type(s1))
s2 = {} //创建字典的写法
print(s2, type(s2))
运行结果:set() <class 'set'>
{} <class 'dict'>
三、集合的运算
1.交(&)并(|)差(-)对称差(^)运算
s1 = {1, 2, 3, 4, 5}
s2 = {2, 4, 6, 8, 10}
print(s1 & s2)
print(s1 | s2)
print(s1 - s2)
print(s2 - s1)
print(s1 ^ s2)
运行结果:{2, 4}
{1, 2, 3, 4, 5, 6, 8, 10}
{1, 3, 5}
{8, 10, 6}
{1, 3, 5, 6, 8, 10}
2.成员运算in、not in
3.子集(<=)、真子集(<)、超集(>)
子集:是原集中任意个数元素排列组合的个体。
真子集:是原集除本身之外任意个数元素排列组合的个体。
超集:就是原集对真子集。
s3 = {1, 2}
s4 = {1, 2, 3}
print(s4 > s3)
print(s4 > s4)
print(s3 < s4)
print(s3 <= s4)
print(s3 <= s3)
运行结果:True
False
True
True
True
四、集合的循环遍历
for i in s4:
print(i)
运行结果:1
2
3
五、集合的互异性
集合中的元素都是独一无二的
例如:给列表去重
list1 = ['a', 'b', 'c', 'd', 'a', 'b', 'd']
list2 = list(set(list1))
print(list2)
运行结果:['c', 'a', 'b', 'd']
六、集合中的元素只能是不可变数据类型
可变:列表、集合、字典
不可变:整型、浮点型、复数、字符串、空值、布尔值、元组
七、集合的增删
add:将元素添加到集合中
update:将容器中的元素添加到集合中
s1 = set()
s1.add('Python')
s1.add('Java')
s1.update(['html', 'c', 'c++'])
print(s1)
运行结果:{'Python', 'c++', 'c', 'Java', 'html'}
discard:删除集合中指定元素,元素不存在不报错
remove:删除集合中的指定元素,元素不存在报错
pop:删除集合中本次排名第一的元素并能返回删除的是那个元素
clear:清空集合
s1.discard('golang')
s1.discard('html')
s1.remove('Java')
print(s1.pop())
print(s1)
运行结果:Python
{'c++', 'c'}
1.如果不考虑元素的顺序,可以使用集合进行快速去重。
2.利用集合的交并差对称差、子集、真子集、超集等运算操作,可以快速的查看数据之间关系。