Python设置字符串差异

bug*_*oot 1 python string set set-difference

在Python中创建字符串集的差异时,我遇到了以下特殊行为:

set(['a', 'b']) - set(['a'])   # results in {'b'} as expected
set(['a', 'b']) - set('a')     # results in {'b'} as expected
set(['a.', 'b']) - set(['a.']) # results in {'b'} as expected
set(['a.', 'b']) - set('a.')   # surprisingly results in {'a.', 'b'}!
Run Code Online (Sandbox Code Playgroud)

为什么在最后一种情况下是“ a”。不从集合中减去?由于第二种情况与第四种情况之间的区别是点,因此我认为这是罪魁祸首。使用双引号给出相同的行为。

knh*_*190 7

您的最后一组解释为{'a', '.'}。因此您的设置操作不会排除'a.'

这是因为set将遍历输入,并且字符串的迭代是通过char进行的。