Python第九章---集合

集合是Python语言提供的内置数据结构,与列表、字典一样都属于可变类型的序列,集合是没有value的字典,集合中的元素不允许重复

集合的创建方式

使用花括号{}

s={1,2,3,4,5,5}
print(s,type(s))

使用内置函数set()

s1=set(range(6))
print(s1,type(s1))           #{0, 1, 2, 3, 4, 5} <class 'set'>

#集合中的元素不允许重复
s2=set([1,2,2,3])            
print(s2,type(s2))           #{1, 2, 3} <class 'set'> 

#集合中的元素是无序的
s3=set((1,2,3,3,5,65))      
print(s3,type(s3))        #{65, 1, 2, 3, 5} <class 'set'>
s4=set('python')
print(s4,type(s4))        #{'y', 'h', 'p', 'n', 'o', 't'} <class 'set'>
s5=set({1,46,25,62,33,33,456})
print(s5,type(s5))           #{1, 33, 62, 456, 25, 46} <class 'set'>

定义一个空集合

s6=set()
print(type(s6))           #set() <class 'set'>

集合生成式

{     i/i*i         for     i   in   range(1,10) }
表示集合元素的表达式      自定义变量     可迭代对象

将{}修改成[]就是列表生成式 没有元组生成式
例:

s={ i*i for i in range(10)}
print(s)           #{0, 1, 64, 4, 36, 9, 16, 49, 81, 25}

集合的相关操作

判断操作:in或not in

s={1,2,3,4,5,6}
print(s)

print(6 in s)
print(6 not in s)

新增操作:调用add()或update()方法

调用add()方法一次添加一个元素

s.add(111)
print(s)             #{1, 2, 3, 4, 5, 6, 111}

调用**update()**方法至少添加一个元素

s.update({1234,341})
print(s)
s.update([100,200])
s.update((999,888))
print(s)             #{1, 2, 3, 4, 5, 6, 100, 200, 999, 111, 1234, 341, 888}

删除操作:调用remove()或discard()或pop()方法

调用**remove()**方法,一次删除一个指定元素,如果指定的元素不存在抛出KeyError

s.remove(1)
print(s)         #{2, 3, 4, 5, 6, 100, 200, 999, 111, 1234, 341, 888}
# s.remove(7)         # KeyError: 7

调用**discard()**方法,一次删除一个指定元素,如果指定的元素不存在不抛出异常

s.discard(2)
print(s)               #{3, 4, 5, 6, 100, 200, 999, 111, 1234, 341, 888}
s.discard(7)           #指定的元素不存在不抛出异常
print(s)               #{3, 4, 5, 6, 100, 200, 999, 111, 1234, 341, 888}

调用**pop()**方法,一次只删除一个任意元素,不能设置固定元素

s.pop()
print(s)           #{4, 5, 6, 100, 200, 999, 111, 1234, 341, 888}
# s.pop(100)          #TypeError: set.pop() takes no arguments (1 given)

清空集合:调用clear()方法

s.clear()
print(s)           #set()

集合间的关系

相等:==或!=

s1={1,2,3}
s2={3,2,1}
s3={1,2}
s4={11,3,5}
print(s1==s2)            #True
print(s1!=s2)            #False
print(s1==s3)            #False

子集:调用issubset方法进行判断

例:a是否是b的子集 a.issubset(b)

print(s3.issubset(s1))          #True
print(s4.issubset(s1))           #False
print(s1.issubset(s2))           #True

超集:调用issuperset方法进行判断

a是否是b的超集 a.issuperset(b) (超集与子集正好相反)

print(s1.issuperset(s3))         #True
print(s1.issuperset(s4))         #False

交集:调用isdisjoint方法进行判断

ab是否没有交集 a.isdisjoint(b) False有交集 True没有交集

print(s1.isdisjoint(s4))           #False
print(s3.isdisjoint(s4))         #True

集合的数学操作(操作后原集合不变)

交集操作:调用intersection()方法 使用&符号

s1={1,2,3,4,5}
s2={1,3,5,7,9}
print(s1.intersection(s2))
print(s1 & s2)           #{1, 3, 5}

并集操作:调用union()方法 或 使用|符号

print(s1.union(s2))
print(s1 | s2)            #{1, 2, 3, 4, 5, 7, 9}

差集操作:调用difference()函数 或 使用-符号

print(s1.difference(s2))
print(s1-s2)            #{2, 4}

对称差集:调用symmetric_difference()方法 或 使用^符号

对称差集表示在A∪B里面,但不在A∩B里面

print(s1.symmetric_difference(s2))         #{2, 4, 7, 9}
print(s1 ^ s2)               #{2, 4, 7, 9}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值