__sub__ Python 中的一组字符串

__sub__ on set of strings in Python

有人可以在这里向我解释 Python 2.7 的行为吗? (如果可能,还有一个更强大的替代方案)

>>> base = set(['blub', 'a'])
>>> print base - set('a')
set(['blub'])
>>> print base - set('blub')
set(['a', 'blub']) # wtf?

找不到任何答案,抱歉。

感谢您的帮助!

这与他们 python 处理用于创建集合的字符串的方式有关。差异:

>>> base = set(['blub', 'a'])
>>> set('a')
set(['a'])
>>> set('blub')
set(['b', 'u', 'l'])

如您所见,python 将字符串的每个字符解释为集合中的单个条目,因此该操作未按预期进行。

如果将 set('blub') 更改为 set(['blub']),该集将按预期创建,并且操作有效。

>>> set(['blub'])
set(['blub'])
>>> print base - set('a')
set(['blub'])
>>> print base - set(['blub'])
set(['a'])
>>>