1 集合
一句话,没有value的字典,无序可变序列。
1.1 集合的创建
1.1.1 使用{}
s={2,3,4,5,5,6,7,7}
#输出为{2,3,4,5,6,7} 集合中元素不允许重复
1.1.2 使用set()
测试代码:
s={2,3,4,5,5,6,7,7}
print(s)
s=set(range(6))
print(s)
s=set([3,4,5,56])
print(s)
s=set((3,4,5,56))
print(s)
s=set('Python') #将字符串逐个字符拆开,产生无序集合
print(s)
s=set({1,124,5,4})
print(s)
测试结果:
1.2 集合的相关操作
1.2.1 是否存在某元素
s={10,20,30,405,60}
print(10 in s)
print(10 not in s)
1.2.2 加元素
-
加一个
s.add(80)
-
至少加一个
s={10,20,30,405,60} s.update({200,400,800}) s.update([56,57,57]) s.update((78,74,70)) #各个元素均添加到随机位置
1.2.3 删元素
-
s.remove(10)
若不存在,会报错KeyError
-
s.discard(500)
若不存在,不会报错
-
s.pop
随机删除一个,不能指定参数
-
s.clear
清空集合中的元素,输出为空set()
1.3 集合的关系
-
==、!=
#元素相同,就相等 s={1,2,3,4} s1={4,3,2,1} s==s1
-
a是否是b的子集
print(s2.issubset(s1)) #是子集则True
-
a是否是b的超集(a是否包含b)
print(s2.issuperset(s1)) #是超集则True
-
两个集合是否没交
#有交集False,没交集True print(s2.isdisjoint(s1)) #有交集False,没交集True
1.4 集合的数学操作
-
交集
print(s1.intersection(s2)) print(s1 & s2)
-
并集
print(s1.union(s2)) print(s1 | s2)
-
差集
s1={1,2,3,4} s2={2,3,4,5} print(s1.difference(s2)) #或者print(s1-s2) #{1}
-
对称差集
print(s1.symmetric_difference(s2)) print(s1^s2) #{1,5}
1.5 集合生成式
测试代码:
s={i for i in range(10)}
#结果是无序的
s={i*i for i in range(10)}
#i*i的位置是输出每个元素的表达式
print(s)
测试结果: