在set
的Built-in
类型的帮助下,我发现这个词other
set方法中其他类型的单词是指什么?
路口(其他...) 设置&其他& ......
返回一组新的共同的元素设置和所有其他。
我的问题是什么是他人的类型的限制,它是任何可迭代或任何兑换set
类型?
在set
的Built-in
类型的帮助下,我发现这个词other
set方法中其他类型的单词是指什么?
路口(其他...) 设置&其他& ......
返回一组新的共同的元素设置和所有其他。
我的问题是什么是他人的类型的限制,它是任何可迭代或任何兑换set
类型?
综观source(线1236+)PyAnySet_Check
被调用时,它检查是否other
是set
,frozenset
或亚型。
如果此检查失败,PyObject_GetIter
将以other
作为参数调用以获取迭代器。
所以任何可迭代的或具有的对象都是-或frozenset
会与有关系。
阅读documentation的休息:
注意的
union()
,intersection()
,difference()
和symmetric_difference()
,issubset()
和issuperset()
方法非运营商的版本将接受任何可迭代作为参数。相反,他们的基于操作员的对应方要求他们的参数是集合。
(重点煤矿。)
+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}
>>>
这是错误的版本。在Python 3中,'issubset'适用于任何可迭代的。 –
@KonradRudolph我没有说'issubset'不起作用,它只是在我的例子中返回False,这意味着它已经工作。 –
你的回答声称:“对于其他一些方法,如'issubset()',其他方法也必须是一套。”这种说法是错误的。 –
您提供的来源链接非常有建设性。谢谢。 –