python容器类型——集合

python容器类型——集合

一、定义

集合是一个无序的,不重复的数据组合

集合是一个只含有key的字典

集合通过花括号中,而各个元素用逗号分割

myset = {'key1','key2'}
print(myset,type(myset))

#{'key2', 'key1'} <class 'set'>

集合元素必须是可hash对象,跟字典一样

set和dict的唯一区别仅在于没有存储对应的value

二、集合的作用

  • 去重:把一个列表变成集合,就自动去重了,天生去重
#集合的去重
mylist = [1,2,3,3,2,3,4,4,45,5]
myset = set(mylist)
print(mylist)
print(myset)

#[1, 2, 3, 3, 2, 3, 4, 4, 45, 5]
#{1, 2, 3, 4, 5, 45}
  • 关系测试:测试两组数据之前的交集、差集、并集等关系

三、集合的基本操作

1、增加

  • 用法: s.add(item) => 添加一项
myset = {1, 2, 3, 4, 5, 45}
myset.add('key3')
print(myset)

#{1, 2, 3, 4, 5, 'key3', 45}
  • 用法:s.update(someitems) => 添加多项
myset = {1, 2, 3, 4, 5, 45}
myset.update('abc')
print(myset)

#{1, 2, 3, 4, 5, 'a', 'c', 45, 'b'}

2、删除

  • 用法1: s.remove(item) => 移除一项(item不存在会出错KeyError)
# #使用remove进行删除的时候,当key不存在的时候会报错
myset = {1, 2, 3, 4, 5, 45, 'a', 'c', 'b'}
myset.remove('c')
# myset.remove('c')
print(myset)

#{1, 2, 3, 4, 5, 'a', 45, 'b'}
  • 用法2:s.discard(item) => 移除一项(item不存在则什么也不做)
#使用discard进行删除的时候,当key不存在的时候不会会报错
myset.discard('c')
print(myset)

#{1, 2, 3, 4, 5, 'a', 45, 'b'}

3、集合操作

a、创建集合
#创建一个数值集合
s = set([3,5,7,9])
#创建一个唯一字符的集合
t = set("hello")
print(s)
print(t)

#{9, 3, 5, 7}
#{'h', 'o', 'e', 'l'}
b、并集
  • 并集:t 和 n的并集 ,返回一个新的 set 包含 n 和 t 中的每一个元素
n = set("hello")
t = set("python")
#并集
print(t.union(n))
print(t|n)

#{'y', 'l', 't', 'h', 'n', 'p', 'o', 'e'}
#{'y', 'l', 't', 'h', 'n', 'p', 'o', 'e'}
c、交集
  • 交集: t 和 n的交集 , 返回一个新的 set 包含 n 和 t 中的公共元素
n = set("hello")
t = set("python")
#交集
print(t.intersection(n))
print(t&n)

#{'h', 'o'}
#{'h', 'o'}
d、差集
  • 差集: 返回一个新的 set 包含 t 中有但是 n 中没有的元素
  • 即t-t和n的交集
n = set("hello")
t = set("python")
#差集
print(t.difference(n))
print(t-n)

#{'t', 'p', 'n', 'y'}
#{'t', 'p', 'n', 'y'}
  • 对称差集: 返回一个新的 set 包含 n 和 t 中不重复的元素(在t或n中,但不会同时出现在二者中)
n = set("hello")
t = set("python")
#对称差集
print(t.symmetric_difference(n))
print(t^n)

#{'t', 'p', 'n', 'e', 'y', 'l'}
#{'t', 'p', 'n', 'e', 'y', 'l'}

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Pod️

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值