添加要设置的列表

新手上路,请多包涵

如何将值列表添加到现有集合?

原文由 Adam Matan 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 278
2 个回答

您不能将列表添加到集合中,因为列表是可变的,这意味着您可以在将列表添加到集合后更改列表的内容。

但是,您可以将元组添加到集合中,因为您无法更改元组的内容:

 >>> a.add(('f', 'g'))
>>> print a
set(['a', 'c', 'b', 'e', 'd', ('f', 'g')])


编辑:一些解释:文档将 set 定义 为不同哈希对象的无序集合。 对象必须是可散列的,以便查找、添加和删除元素比每次执行这些操作时查看每个单独的元素更快。使用的具体算法在 Wikipedia 文章 中进行了解释。 Python 散列算法在 effbot.org__hash__ 函数中的 python 参考 中进行了解释。

一些事实:

  • 集合元素字典键 必须是可散列的
  • 一些不可散列的数据类型:
    • list :使用 tuple 代替
    • set :使用 frozenset 代替
    • dict :没有官方对应,但有一些 食谱
  • 默认情况下,对象实例是可散列的,每个实例都有唯一的散列。您可以按照 python 参考中的说明覆盖此行为。

原文由 Otto Allmendinger 发布,翻译遵循 CC BY-SA 3.0 许可协议

添加列表的内容

使用 set.update()|= 运营商:

 >>> a = set('abc')
>>> a
{'a', 'b', 'c'}

>>> xs = ['d', 'e']
>>> a.update(xs)
>>> a
{'e', 'b', 'c', 'd', 'a'}

>>> xs = ['f', 'g']
>>> a |= set(xs)
>>> a
{'e', 'b', 'f', 'c', 'd', 'g', 'a'}


添加列表本身

无法将列表本身直接添加到集合中,因为集合元素必须是可 散列的

相反,可以先将列表转换为元组:

 >>> a = {('a', 'b', 'c')}

>>> xs = ['d', 'e']
>>> a.add(tuple(xs))
>>> a
{('a', 'b', 'c'), ('d', 'e')}

原文由 aehlke 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题