04-7数据类型-集合

集合概念
无序的, 不可随机访问的, 不可重复的元素集合
与数学中集合的概念类似,可对其进行交、并、差、补等逻辑运算
分为 可变集合和非可变集合
  • set
    为可变集合(增删改)

  • frozenset
    不可变集合(创建好之后, 无法增删改)

定义

  • 可变集合set
    • s = {1,2,3,4}
      s = set(iterable)
      其中iterable可以是字符串、列表、元组、字典等
      但是为dict时,只会获取提Key作为set的元素
    • 集合推导式
      s = set(x**2 for x in range(1, 10) if x % 2 == 0)
      s = {推导式}
  • 不可变集合frozenset
    • fs = frozenset(iterable)
      其中iterable可以是字符串、列表、元组、字典等
      但是为dict时,只会获取提Key作为set的元素
    • 集合推导式
      s = frozenset(x**2 for x in range(1, 10) if x % 2 == 0)

注意
1. 创建一个空集合时, 需要使用set() 或者 frozenset(), 不能使用 s = {}
会被识别成为字典
2. 集合中的元素, 必须是可哈希的值
如果一个对象在自己的生命周期中有一哈希值(hash value)是不可改变的,
那么它就是可哈希的(hashable)的
3. 如果集合中的元素值出现重复, 则会被合并为1个

常用操作

单一集合操作
  • 可变集合
s.add(element) 注意: 必须保证添加的元素是可哈希的值
s.remove(element)
指定删除set对象中的一个元素 如果集合中没有这个元素,则返回一个错误
s.discard(element)
指定删除集合中的一个元素 若没有这个元素,则do nothing
s.pop(element)
随机删除并返回一个集合中的元素 若集合为空,则返回一个错误
s.clear()
清空一个集合中的所有元素
元素为不可变类型, 不能修改
无法通过索引或key进行查询
1. 通过 for in 进行遍历
2. 通过迭代器进行访问
  • 不可变集合不能增删改
  1. 通过 for in 进行遍历
  1. 通过迭代器进行访问
集合之间操作
交集
intersection(Iterable)
逻辑与 ‘&’
intersection_update(…)
交集计算完毕后, 会再次赋值给原对象
会更改原对象
只适用于可变集合
并集
union()返回并集
逻辑或 '|'返回并集
update()更新并集
差集
difference()
算术运算符减 ‘-‘
difference_update()
判定
isdisjoint()两个集合不相交
issuperset()一个集合包含另一个集合
issubset()一个集合包含于另一个集合
注意 可变与不可变集合混合运算, 返回结果类型以运算符左侧为主
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值