集合与集合Python的区别

8

set("a")sets.Set("a")有什么区别?它们的类型不同,但它们似乎做了相同的事情。

我在网上找不到任何有关这方面的资源,但是我在例子中看到过两种用法。

4个回答

12
你已经标记为Python 3,因此区别在于sets不存在,应使用set
在Python 2中,区别在于sets已经被弃用。它是旧版本、速度较慢、不太好用的版本。应使用set。这在 sets模块的文档中有解释,搜索Python sets即可立即出现文档。

4

内置的set()是基于旧的sets.Set(),并且运行速度更快。
两者都可以完成相同的任务,尽管在Python 3中,'sets'模块已经不存在了。

以下是来自Python 2库的直接回答:
内置的set和frozenset类型是根据从sets模块中学到的经验设计的。关键差异在于:

Set和ImmutableSet被重命名为set和frozenset。

- 没有等效于BaseSet的内容。取而代之的是使用isinstance(x, (set, frozenset))。

- 内置版本的哈希算法对大多数数据集的性能表现更好(冲突更少)。

- 内置版本具有更高效的空间压缩。

- 内置版本没有union_update()方法。取而代之的是使用等效的update()方法。

- 内置版本没有_repr(sorted=True)方法。取而代之的是使用内置的repr()和sorted()函数:repr(sorted(s))。

- 内置版本没有自动转换为不可变对象的协议。许多人发现这个功能很困惑,并且社区中没有人报告发现它的真实用途。


0

0

差别不大,你应该使用内置的setfrozenset,而不是sets模块。

sets模块文档本身就说 -

自版本2.6起已弃用:内置的set/frozenset类型替换了此模块。

在Python 3.x中没有sets模块,只有Python 2。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接