Skip to main content
 首页 » 编程设计

python之为什么列表和集合之间的元素检查处理方式不同

2024年08月22日36lidabo

为什么列表和集合的元素检查处理方式不同?

举个例子:

['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'}