Python学习——集合

一、集合的定义
集合也是Python语言所提供的内置数据结构,集合与列表、字典一样都属于可变类型的序列,集合是没有value的字典,所以集合也是无序的。
二、集合的创建
方式一:使用大括号进行创建

#使用大括号创建结合
s={1,3,5,7,9}
print(s)

运行结果
在这里插入图片描述
方法二:使用内置函数set进行创建,同时也可以把其他数据结构转换为集合。

#使用内置函数创建
#产生06的数作为集合
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)

运行结果
在这里插入图片描述
九、总结
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值