一篇搞定python基础(十)
【摘要】 python基础(十),本篇文章意在介绍集合的概念。它python内置数据结构,与列表、字典一样都属于可变序列,集合是没有value的字典
二十五、集合
25.1、集合的概述与创建
''''''
'''集合:python语言中的内置数据结构,与列表、字典一样都属于可变序列,集合是没有value的字典'''
'''集合的创建方式,第一种,使用{}'''
s={2,3,4,5,5,6,7,7}#集合中的元素不允许重复
print(s,type(s))
结果为:
{2, 3, 4, 5, 6, 7} <class 'set'>
'''第二种,使用内置函数set()'''
s1=set(range(6))
print(s1,type(s1))
s2=set([1,2,4,5,5,5,6,6])#将列表中的元素转成了集合类型,同时去掉了重复的元素
print(s2,type(s2))
s3=set((1,2,4,4,5,65))#将元组中的元素转成了集合类型,同时去掉了重复的元素
print(s3,type(s3))#你会发现65跑到前面去了,进一步可以证明集合中的元素是无序的
s4=set('python')
print(s4,type(s4))#你会发现输出的顺序颠倒了,所以集合中的元素是无序的
s5=set({12,4,34,55,66,44,4})
print(s5,type(s5))
结果为:
{0, 1, 2, 3, 4, 5} <class 'set'>
{1, 2, 4, 5, 6} <class 'set'>
{65, 1, 2, 4, 5} <class 'set'>
{'h', 'n', 'o', 'y', 't', 'p'} <class 'set'>
{34, 66, 4, 55, 12, 44} <class 'set'>
'''定义一个空集合'''
s6=set()
print(s6,type(s6))
结果为:
set() <class 'set'>
25.2、集合的相关操作
-
集合元素的判断
'''集合元素的判断操作''' s={10,20,30,405,60} print(10 in s) print(100 in s) print(10 not in s) print(100 not in s) 结果为: True False False True
-
集合元素的新增
'''集合元素的新增操作''' s={10,20,30,405,60} s.add(80)#添加一个元素 print(s) s.update({200,300,400})#添加多个元素 print(s) s.update([100,99,8]) s.update((78,64,56)) print(s) 结果为: {80, 20, 405, 10, 60, 30} {200, 10, 300, 80, 400, 20, 405, 60, 30} {64, 99, 100, 200, 8, 10, 300, 78, 80, 400, 20, 405, 56, 60, 30}
-
集合元素的删除
'''集合元素的删除操作''' s={64, 99, 100, 200, 8, 10, 300, 78, 80, 400, 20, 405, 56, 60, 30} s.remove(100)#删除指定的元素 print(s) #s.remove(500)#元素不存在就报错KeyError: 500 结果为: {64, 99, 200, 8, 10, 300, 78, 80, 400, 20, 405, 56, 60, 30} s.discard(500)#元素不存在也不报错,无所谓的样子 s.discard(300)#元素存在就直接删除了 print(s) 结果为: {64, 99, 200, 8, 10, 78, 80, 400, 20, 405, 56, 60, 30} s.pop()#随便删除一个元素 #s.pop(200)#pop()方法不可以指定参数,指定参数就会报错TypeError: pop() takes no arguments (1 given) print(s) 结果为: {99, 200, 8, 10, 78, 80, 400, 20, 405, 56, 60, 30} s.clear()#清空所有元素 print(s) 结果为: set()
25.3、集合间的关系
'''集合间的关系'''
'''两个集合是否相等(元素相同就相等)'''
s={10,20,30,40}
s1={20,30,10,40}
print(s==s1)
print(s!=s1)
结果为:
True
False
'''一个集合是否是另一个集合的子集'''
s2={10,20,30,40,50,60}
s3={10,20,30,40}
s4={10,20,90}
print(s3.issubset(s2))#s3是否是s2的子集
print(s4.issubset(s2))
结果为:
True
False
'''一个集合是否是另一个集合的超集'''
print(s2.issuperset(s3))#s2是否是s3的超集
print(s2.issuperset(s4))
结果为:
True
False
'''两个集合是否含有交集'''
print(s3.isdisjoint(s4))#s3和s4是否有交集,有交集为False,没有交集为True
结果为:
False
25.4、集合的数据操作
'''集合的数据操作'''
'''交集'''
s1={10,20,30,40}
s2={20,30,40,50,60}
print(s1.intersection(s2))#s1与s2的交集
print(s1&s2)#intersection和&等价,交集操作
结果为:
{40, 20, 30}
{40, 20, 30}
'''并集'''
print(s1.union(s2))#s1与s2的并集
print(s1|s2)#union和|等价,并集操作
结果为:
{40, 10, 50, 20, 60, 30}
{40, 10, 50, 20, 60, 30}
'''差集'''
print(s1.difference(s2))#s1与s2的差集,可以用s1和s2的并集减去s2
print(s1-s2)#difference和-等价,差集操作
结果为:
{10}
{10}
'''对称差集'''
print(s1.symmetric_difference(s2))#s1和s2的对称差集,可以用s1和s2的并集减去s1和s2的交集
print(s1^s2)#symmetric_difference和^等价,对称差集操作
结果为:
{50, 10, 60}
{50, 10, 60}
25.5、集合生成式
'''集合生成式'''
s={i*i for i in range(6)}
print(s)
结果为:
{0, 1, 4, 9, 16, 25}
25.6、列表、字典、元组、集合总结
----------------列表、字典、元组、集合总结-----------------
数据结构 是否可变 是否重复 是否有序 定义符号
-------------------------------------------------------
列表(list) 可变 可重复 有序 []
-------------------------------------------------------
元组(tuple) 不可变 可重复 有序 ()
-------------------------------------------------------
字典(dict) 可变 键不可重复, 无序 {key:value}
值可重复
-------------------------------------------------------
集合(set) 可变 不可重复 无序 {}
-------------------------------------------------------
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)