# day4 集合

集合

  • 无序的
  • 不可重复(自动去重)
  • 不可更改
    • 内部的元素是hashable
    • 集合本身是unhashable
  • 用途:
    • 去重(列表——>集合)
    • 关系测试

1.集合的创建

空集合

st=set()
print(st,type(st))

#set() <class 'set'>

多元素集合的创建

st={1,2,3,'a',(1,2,3)}
print(st,type(st))

#{1, 2, 3, 'a', (1, 2, 3)} <class 'set'>

强转

  • 元素必须为hashable
li=[2,3,4,5,2,4,7,8]
st=set(li)
print(st)

#{2, 3, 4, 5, 7, 8}

sr="asdasdf"
st=set(sr)
print(st)

#{'f', 'd', 'a', 's'}

dic={'name':'tom','age':'15'}
st=set(dic)
print(st)

#{'age', 'name'}

2.集合的常见操作

  • set.add()
    • 添加新元素
set={1,2,3,4,5}
set.add('a')
print(set)

#{1, 2, 3, 4, 5, 'a'}
  • set.update()
    • 合并两个集合,重复的元素只会出现一次
st={1,2,3,4,5,6}
st2={3,4,5,6,7,8,9}
print(st.update(st2))
print(st)


#None
#{1, 2, 3, 4, 5, 6, 7, 8, 9}

  • set.pop()
    • 删除排序最小的元素
set={1,2,3,4,5,'a','b','c'}
print(set.pop())
print(set)

#1
#{2, 3, 4, 5, 'b', 'c', 'a'}
  • set.discard()
    • 删除指定元素
    • 如果元素不存在则无动作,返回None
set={1,2,3,4,5,'a','b','c'}
print(set.discard('a'))
print(set.discard('d'))
print(set)

#None
#None
#{1, 2, 3, 4, 5, 'c', 'b'}
  • set.remove()
    • 移除指定元素
    • 如果元素不存在则报错
set={1,2,3,4,5,'a','b','c'}
print(set.remove('a'))
print(set.remove('d'))
print(set)

#None
#KeyError: 'd'
#{1, 2, 3, 4, 5, 'b', 'c'}
  • del set
    • 删除集合
set={1,2,3,4,5,'a','b','c'}
del set
print(set)

#<class 'set'>

不可更改

不可查询

遍历

  • 元素遍历
set={1,2,5,'a','b','c'}
for i in set:
    print(i,end=" ")
    
#c 1 2 5 b a 
  • 枚举遍历
set={1,2,5,'a','b','c'}
for i in enumerate(set):
    print(i,end=" ")
    
#(0, 1) (1, 2) (2, 5) (3, 'c') (4, 'a') (5, 'b') 

3.集合的基本运算

子集判断

  • 格式: 子集<总集
st=set('1234')
st2=set('234')
print(st>st2)
print(st2<st)

#True
#True

交集

  • &
    • 返回交集
st=set('1234')
st2=set('234')
print(st&st2)

#{'3', '4', '2'}
  • set.intersection()
    • 返回交集
st=set('1234')
st2=set('234')
print(st.intersection(st2))

#{'4', '3', '2'}

并集

  • |
  • 返回并集
st=set('01234')
st2=set('34567')
print(st|st2)

#{'6', '4', '5', '3', '0', '7', '2', '1'}
  • set.union()
    • 返回并集
st=set('01234')
st2=set('34567')
print(st.union(st2))

#{'7', '5', '2', '0', '3', '4', '6', '1'}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值