为什么列表和集合的元素检查处理方式不同?
举个例子:
['aa'] 中的'a' 返回 False
'a' in ('aa') 返回 True
请您参考如下方法:
当您编写 ('aa') 时,您只是在创建一个字符串,因此很明显 in 将检查字符并评估为 True。您可以使用
>>> x = ('aa')
>>> print(type(x))
<class 'str'>
如文档中所示 tuple syntax ,为了创建单个元素元组,您需要一个尾随逗号,即 ('aa',)。在这种情况下,检查元组中的 'a' 将如预期的那样导致 False。
如果您实际上用
创建了一个集合x = set('aa')
这就是我想你所做的,一个集合是用你的字符串中的唯一字符作为元素创建的,因为你传递的字符串被视为集合的可迭代对象以从 (characters ).因此,您的集合变为 {'a'},因此 in 将评估为 True。相反,如果您使用集合文字语法创建集合
x = {'aa'}
使用您的单个字符串 'aa' 创建一个集合,并且 in 将评估为 False。所以这取决于你如何从 'aa' 初始化一个集合。
>>> set('dog')
{'d', 'g', 'o'}
>>> {'dog'}
{'dog'}
