Python - 字符串vs列表的超集

时间:2017-05-22 15:05:46

标签: python set superset

我有一个名为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

谢谢!

1 个答案:

答案 0 :(得分:3)

这只是前一个答案的扩展,为了清晰起见......

ss.issuperset('ab')被解释为ss.issuperset(set('ab')),可能会有点混乱,因为如果您考虑以下代码:

>>> sss = set('ab')
>>> sss
set(['a', 'b'])

您会注意到设置了设置(' ab')([' a',' b'])。现在ssset(['a', 'b'])的超级集合吗?不,因为ss不包含'b',因此False

set('ab')被解释为set(['a', 'b'])的原因是set()接受 Iterable 对象作为参数,set()遍历传递迭代,一个接一个地添加元素。在Python和许多其他语言中,字符串字符列表,并提供函数__iter__

如果您将[' ab']传递给set {(如:set(['ab'])),则该语句等同于set(list('ab')),在这种情况下,iterable是列表而不是字符串 'ab'