set("a")
和sets.Set("a")
有什么区别?它们的类型不同,但它们似乎做了相同的事情。
我在网上找不到任何有关这方面的资源,但是我在例子中看到过两种用法。
set("a")
和sets.Set("a")
有什么区别?它们的类型不同,但它们似乎做了相同的事情。
我在网上找不到任何有关这方面的资源,但是我在例子中看到过两种用法。
sets
不存在,应使用set
。sets
已经被弃用。它是旧版本、速度较慢、不太好用的版本。应使用set
。这在 sets模块的文档中有解释,搜索Python sets
即可立即出现文档。内置的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))。
- 内置版本没有自动转换为不可变对象的协议。许多人发现这个功能很困惑,并且社区中没有人报告发现它的真实用途。
差别不大,你应该使用内置的set
或frozenset
,而不是sets
模块。
sets
模块文档本身就说 -
自版本2.6起已弃用:内置的set/frozenset类型替换了此模块。
在Python 3.x中没有sets
模块,只有Python 2。