加入收藏 | 设为首页 | 会员中心 | 我要投稿 云计算网_泰州站长网 (http://www.0523zz.com/)- 视觉智能、AI应用、CDN、行业物联网、智能数字人!
当前位置: 首页 > 综合聚焦 > 编程要点 > 语言 > 正文

Python frozenset集合 set集合的不能变版本

发布时间:2022-07-05 12:33:29 所属栏目:语言 来源:互联网
导读:set 集合是可变序列,程序可以改变序列中的元素;frozenset 集合是不可变序列,程序不能改变序列中的元素。set 集合中所有能改变集合本身的方法,比如 remove()、discard()、add() 等,frozenset 都不支持;set 集合中不改变集合本身的方法,fronzenset 都
  set 集合是可变序列,程序可以改变序列中的元素;frozenset 集合是不可变序列,程序不能改变序列中的元素。set 集合中所有能改变集合本身的方法,比如 remove()、discard()、add() 等,frozenset 都不支持;set 集合中不改变集合本身的方法,fronzenset 都支持。
 
  我们可以在交互式编程环境中输入dir(frozenset)来查看 frozenset 集合支持的方法:
 
  下面程序演示了 frozenset 的用法:
  s = {'Python', 'C', 'C++'}
  fs = frozenset(['Java', 'Shell'])
  s_sub = {'PHP', 'C#'}
  #向set集合中添加frozenset
  s.add(fs)
  print('s =', s)
  #向为set集合添加子set集合
  s.add(s_sub)
  print('s =', s)
  运行结果:
  s = {'Python', frozenset({'Java', 'Shell'}), 'C', 'C++'}
  Traceback (most recent call last):
      File "C:UsersmozhiyanDesktopdemo.py", line 11, in <module>
          s.add(s_sub)
  TypeError: unhashable type: 'set'
 
  需要注意的是,set 集合本身的元素必须是不可变的, 所以 set 的元素不能是 set,只能是 frozenset。第 6 行代码向 set 中添加 frozenset 是没问题的,因为 frozenset 是不可变的;但是,第 10 行代码中尝试向 set 中添加子 set,这是不允许的,因为 set 是可变的。

(编辑:云计算网_泰州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读