我在 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'}!
为什么在最后一个例子中是 'a.'不从集合中减去?由于第二种情况和第四种情况之间的区别是点,我认为这是罪魁祸首。使用双引号会产生相同的行为。
请您参考如下方法:
您的最后一组被解释为 {'a', '.'}。所以你的设置操作不会排除 'a.'
这是因为 set 会遍历输入,而字符串的迭代是通过 char 进行的。
