我有一个名为set
的简单ss
变量:
ss
Out[5]: {'a', 'ab'}
有人可以解释以下3个输出:
ss.issuperset('a')
Out[6]: True
ss.issuperset('ab')
Out[7]: False
ss.issuperset(['ab'])
Out[8]: True
谢谢!
答案 0 :(得分:3)
这只是前一个答案的扩展,为了清晰起见......
ss.issuperset('ab')
被解释为ss.issuperset(set('ab'))
,可能会有点混乱,因为如果您考虑以下代码:
>>> sss = set('ab')
>>> sss
set(['a', 'b'])
您会注意到设置了设置(' ab')([' a',' b'])。现在ss
是set(['a', 'b'])
的超级集合吗?不,因为ss
不包含'b'
,因此False
。
set('ab')
被解释为set(['a', 'b'])
的原因是set()
接受 Iterable 对象作为参数,set()
遍历传递迭代,一个接一个地添加元素。在Python和许多其他语言中,字符串是字符的列表,并提供函数__iter__
。
如果您将[' ab']传递给set {(如:set(['ab'])
),则该语句等同于set(list('ab'))
,在这种情况下,iterable是列表而不是字符串 'ab'
。