06python基础 集合

1. 集合

  • python内置的数据结构
  • 与列表,字典一样属于可变类型
  • 集合是没有value的字典
1.1 集合创建方式
  • 使用 {}
  • 使用内置函数set()
# 1.
s = {2,3,4,5,6,7,7} #集合的元素不允许重复
print(s)
# 2.
s1 = set(range(6))
print(s1,type(s1)
      
s2 = set([1,2,3,3,3,4,5])
print(s2,type(s2))
      
s3 = set((1,2,3,3,65))
print(s3,type(s3))
      
s4 = set('hello')
print(s4)
      
s5 = set({123,4,5,6,3,3,3,4})
print(s5)

# 定义空数组
s6 = {}
print(type(s6)) # dict
s7 = set()
print(type(s7))
'''
{2, 3, 4, 5, 6, 7}
{0, 1, 2, 3, 4, 5} <class 'set'>
{1, 2, 3, 4, 5} <class 'set'>
{65, 1, 2, 3} <class 'set'>
{'o', 'h', 'l', 'e'}
{3, 4, 5, 6, 123}
<class 'dict'>
<class 'set'>
'''
1.2 集合的相关操作
  • 判断操作
    • in 或 not in
  • 新增
    • 调用add()方法,一次添加一个元素
    • 调用update()方法,至少添加一个元素
  • 删除
    • 调用remove()方法,一次删除一个指定元素,指定元素不存在则抛出KeyError
    • 调用discard()方法,一次删除一个指定元素,指定元素不存在不抛出异常
    • 调用pop()方法,一次只删除一个任意元素
    • 调用clear()方法,清空

判断

s = {10,20,30,400,60}
print(10 in s)
print(10 not in s)
# True
# False

新增

s = {10,20,30,400,60}
s.add(80) # 一次添加一个
print(s)

s.update({200,400,300}) # 一次至少添加一个
print(s)
s.update([100,90])
s.update((12,32,43))
print(s)

'''
{400, 80, 20, 10, 60, 30}
{200, 10, 300, 400, 80, 20, 60, 30}
{32, 100, 200, 10, 43, 300, 12, 400, 80, 20, 90, 60, 30}
'''

删除

s = {1,2,3,4,5,6,7,8,9}
s.remove(1) # 元素不存在抛异常
print(s)

s.discard(2) # 元素不存在不抛异常
print(s)

s.pop() # 不能指定参数,删除任意元素
print(s)

s.clear()
print(s)

'''
{2, 3, 4, 5, 6, 7, 8, 9}
{3, 4, 5, 6, 7, 8, 9}
{4, 5, 6, 7, 8, 9}
set()
'''
1.3 集合的关系
  • 两个集合是否相等
    • == 或 != 判断
  • 一个集合是否是另一个的子集
    • 调用issubset()判断
  • 一个集合是否是另一个的超集
    • 调用issuperset()判断
  • 两个集合是否没有交集
    • 调用isdisjoint()判断

是否相等

s1 = {1,2,3,4}
s2 = {3,4,2,1}
print(s1 == s2)
print(s1 != s2)
# true
# false

子集

s1 = {1,2,3,4,5}
s2 = {1,2,3}
s3 = {1,2,6}
print(s2.issubset(s1)) # true
print(s3.issubset(s1)) # false

超集

s1 = {1,2,3,4,5}
s2 = {1,2,3}
s3 = {1,2,6}
print(s1.issuperset(s2)) # true
print(s1.issuperset(s3)) # flase

交集

s1 = {1,2,3,4,5}
s2 = {1,2,3}
s3 = {1,2,6}
print(s2.isdisjoint(s1)) # false
print(s2.isdisjoint(s3)) # false
s4 = {7,8,9}
print(s4.isdisjoint(s1)) # true
# 有交集为false,没有交集为true
1.4 集合的数学操作

交集

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

并集

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

差集

s1 = {1,2,3,4}
s2 = {2,3,4,5,6}
print(s1.difference(s2))
print(s1-s2)
# {1}
# {1}

对称差集

s1 = {1,2,3,4}
s2 = {2,3,4,5,6}
print(s1.symmetric_difference(s2))
print(s1^ s2)
# {1, 5, 6}
# {1, 5, 6}
1.5 集合生成式
  • 将{}修改为[]就是列表生成式
# 列表生成式
lst = [i*i for i in range(6)]
print(lst)
# 集合生成式
lst1 = {i*i for i in range(6)}
print(lst1)
'''
[0, 1, 4, 9, 16, 25]
{0, 1, 4, 9, 16, 25}
'''

总结

数据结构是否可变是否重复是否有序定义符号
列表(list)可变可重复有序[]
元祖(tuple)不可变可重复有序()
字典(dict)可变key不可/value可无序{key:value}
集合(set)可变不可重复无序{}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值