2016-04-27 22 views
2

setBuilt-in类型的帮助下,我发现这个词otherset方法中其他类型的单词是指什么?

路口(其他...) 设置&其他& ......

返回一组新的共同的元素设置和所有其他。

我的问题是什么是他人的类型的限制,它是任何可迭代或任何兑换set类型?

回答

1

综观source(线1236+)PyAnySet_Check被调用时,它检查是否othersetfrozenset或亚型。

如果此检查失败,PyObject_GetIter将以other作为参数调用以获取迭代器。

所以任何可迭代的或具有的对象都是-或frozenset会与有关系。

+0

您提供的来源链接非常有建设性。谢谢。 –

2

阅读documentation的休息:

注意的union()intersection()difference()symmetric_difference()issubset()issuperset()方法非运营商的版本将接受任何可迭代作为参数。相反,他们的基于操作员的对应方要求他们的参数是集合。

(重点煤矿。)

+0

+1显示最明显的方式来学习这个东西,文档,并指出我的答案中的错误。 :-) –

1

这取决于。对于某些方法,如intersection(),other可以是任何可迭代的,而对于某些方法的一些基于运算符的对应方如issubset()(运算符对应方为<=),则other也必须是一个集合。你也可以自己测试。这里的一些例子:

>>> s = set([1,2,3,4,5]) 
>>> s 
{1, 2, 3, 4, 5} 
>>> l = [1,3,5,7,9] 
>>> l 
[1, 3, 5, 7, 9] 
>>> s.issubset(l) 
False 
>>> s <= l 
Traceback (most recent call last): 
    File "<pyshell#5>", line 1, in <module> 
    s <= l 
TypeError: unorderable types: set() <= list() 
>>> s <= set(l) 
False 
>>> s.intersection(l) 
{1, 3, 5} 
>>> 
+0

这是错误的版本。在Python 3中,'issubset'适用于任何可迭代的。 –

+0

@KonradRudolph我没有说'issubset'不起作用,它只是在我的例子中返回False,这意味着它已经工作。 –

+1

你的回答声称:“对于其他一些方法,如'issubset()',其他方法也必须是一套。”这种说法是错误的。 –

相关问题