Set和set之间有区别吗?

时间:2015-04-27 20:55:18

标签: python python-2.7 set

我正在使用Python 2.7,只是想知道set()Set()之间是否有任何区别(即有/无大小写)。

具体来说,Python指令https://docs.python.org/2/library/sets.html建议应该导入集并将其初始化为:

from sets import Set
x = Set()

我刚刚使用命令set()而没有导入任何内容,即:

x = set()

只是想知道这些是否相同,或者它们是否有所不同。

2 个答案:

答案 0 :(得分:1)

正如在Python文档中所说,Set类提供除__hash__()之外的每个set方法。

  

对于需要哈希方法的高级应用程序,ImmutableSet类添加哈希()方法,但省略了改变集合内容的方法。 Set和ImmutableSet都派生自BaseSet,这是一个抽象类,可用于确定某些东西是否为set:isinstance(obj,BaseSet)。

答案 1 :(得分:1)

我对他们一无所知 - 老实说,直到我看到你的问题,我认为他们是完全相同的。

现在检查

>>> from sets import Set
>>> x = Set()
>>> y = set()
>>> len(dir(y))
54
>>> len(dir(x))
63

并意识到他们有一些差异

>>> Y = set(dir(y))
>>> X = set(dir(x))
>>> X-Y
set(['_compute_hash', '__module__', '_update', '_binary_sanity_check', '__setstate__', '__deepcopy__', '_repr', '__as_immutable__', 'union_update', '__slots__', '__copy__', '__as_temporarily_immutable__', '_data', '__getstate__'])    
>>> Y-X
set(['__rand__', '__ror__', '__rsub__', '__rxor__', 'isdisjoint'])

当然,这并未提供有关其差异的任何明确信息,但表明它们不相同:)