一、集合的定义
集合也是Python语言所提供的内置数据结构,集合与列表、字典一样都属于可变类型的序列,集合是没有value的字典,所以集合也是无序的。
二、集合的创建
方式一:使用大括号进行创建
#使用大括号创建结合
s={1,3,5,7,9}
print(s)
运行结果
方法二:使用内置函数set进行创建,同时也可以把其他数据结构转换为集合。
#使用内置函数创建
#产生0到6的数作为集合
s=set(range(6))
print(s)
#将列表转化为集合
print(set([0,1,2,3,4]))
#将元组转换成集合
print(set((5,6,7,8)))
#将字符串转化为集合
print(set('python'))
#将集合转化为集合
print(set({9,10,11,12}))
#创建一个空的集合
print(set())
运行结果
注意因为集合可以视作没有值的字典,所以可以理解为只有键,故集合中的元素不能重复,如果重复则会被覆盖。
#集合中的元素不能重复,否则会被覆盖
s={1,1,2,1,3,5,5,7}
print(s)
运行结果
三、集合元素的判断
与前面一样,使用in或not in ,输出结果是true和false。
s={1,3,5,7,9}
print(1 in s)
print(1 not in s)
print(100 in s)
print(100 not in s)
运行结果
四、集合元素的添加
(1)使用add(),一次添加一个元素
s={0,1,2,3,4,5,6}
print('原集合',s)
#使用add,添加一个元素
s.add(7)
print('添加之后的集合',s)
运行结果
(2)使用update(),至少添加一个元素
s={0,1,2,3,4,5,6}
print('原集合',s)
#使用update,至少添加一个元素
s.update({7,8,9,10,11})
print('添加后的',s)
运行结果
五、集合元素的删除
(1)使用remove(),一次删除一个指定元素,如果指定元素不存在,报错KeyError
s={0,1,2,3,4,5,6}
print('原集合',s)
s.remove(1)
print('删除后的',s)
s.remove(100)
print(s)
运行结果
(2)使用discard(),一次删除一个指定的元素,如果指定元素不存在,也不会报错,只会输出原来的列表
s={0,1,2,3,4,5,6}
print('原集合',s)
s.discard(1)
print('删除后的',s)
s.discard(100)
print(s)
运行结果
(3)使用pop(),一次删除且只能删除一个任意元素。
s={0,1,2,3,4,5,6}
print('原集合',s)
#使用pop(),一次删除且只能删除一个任意元素。
s.pop()
print(s)
运行结果
(4)使用clear(),清空集合。
s={0,1,2,3,4,5,6}
print('原集合',s)
#使用pop(),一次删除且只能删除一个任意元素。
s.clear()
print(s)
运行结果
六、集合间的关系
由之前的知识储备可知,集合间的关系有相等,谁是谁的子集,谁是谁的超集,两集合之间是否有交集等。
(1)集合相等
#判断集合是否相等
s1={1,2,3,4}
s2={4,3,2,1}
print(s1==s2)
我们知道集合中的元素是无序的,所以运行结果为
(2)子集与超集
子集
#子集与超集
s1={1,2,3,4,5,6,7,8}
s2={1,2,3,4}
s3={1,2,3,9}
print(s2.issubset(s1))
print(s3.issubset(s1))
运行结果
超集
#子集与超集
s1={1,2,3,4,5,6,7,8}
s2={1,2,3,4}
s3={1,2,3,9}
print(s1.issuperset(s2))
print(s1.issuperset(s3))
运行结果
(3)判断两个间是否有交集
注意有交集输出结果为false,无交集输出结果为true
#交集
s1={5,6,7,8}
s2={1,2,3,4}
s3={1,2,3,9}
print(s1.isdisjoint(s2))
print(s2.isdisjoint(s3))
运行结果
七.集合的数学操作
(1)交集操作
#交集操作
s1={1,2,3,4,5}
s2={3,4,5,6,7}
print(s1.intersection(s2))
print(s1 & s2)
运行结果
(2)并集操作
#交集操作
s1={1,2,3,4,5}
s2={3,4,5,6,7}
print(s1.union(s2))
print(s1 | s2)
运行结果
(3)差集
#差集
s1={1,2,3,4}
s2={2,3,4,5,6}
print(s1.difference(s2))
print(s1-s2)
print(s2.difference(s1))
print(s2-s1)
运行结果
(4)对称差集
#差集
s1={1,2,3,4}
s2={2,3,4,5,6}
print(s1.symmetric_difference(s2))
print(s1^s2)
运行结果
八、集合生成式
与列表生成式相似,将列表生成式的方括号改为花括号即可
#集合生成式
s1={i for i in range(10)}
s2={2*i for i in range(10)}
s3={i*i for i in range(10)}
print(s1)
print(s2)
print(s3)
运行结果