Python学习指南:深入理解集合操作

一、集合的定义
集合也是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)

运行结果

九、总结

作者:wuliwuliClemence

物联沃分享整理
物联沃-IOTWORD物联网 » Python学习指南:深入理解集合操作

发表回复