为什么Python'';在运算符中'';返回';正确';对于float 1.0,如果只有int 1是[1,2.3,';blabla';]中的列表项?

为什么Python'';在运算符中'';返回';正确';对于float 1.0,如果只有int 1是[1,2.3,';blabla';]中的列表项?,python,list,Python,List,在Linux上的Python3.8.5 Shell中,我有一个名为“mixedlist”(见下文)的列表,其中包含一个整数、一个浮点和一个字符串。 如我们所见,整数1包含在“mixedlist”中,而数字1.1则不包含。到现在为止,一直都还不错。我不明白的是:奇怪的是,Python还为浮点数1.0返回'True',即使列表中只包含整数1。我认为这不是一个bug,而是一个特性。但如果这是预期的行为,有人能指出为什么它是有意义的吗 >>> mixedlist = [1, 2.3,

在Linux上的Python3.8.5 Shell中,我有一个名为“mixedlist”(见下文)的列表,其中包含一个整数、一个浮点和一个字符串。 如我们所见,整数1包含在“mixedlist”中,而数字1.1则不包含。到现在为止,一直都还不错。我不明白的是:奇怪的是,Python还为浮点数1.0返回'True',即使列表中只包含整数1。我认为这不是一个bug,而是一个特性。但如果这是预期的行为,有人能指出为什么它是有意义的吗

>>> mixedlist = [1, 2.3, 'blabla']
>>> type(mixedlist[0])
<class 'int'>
>>> type(mixedlist[1])
<class 'float'>
>>> type(mixedlist[2])
<class 'str'>
>>> 1 in mixedlist
True
>>> 1.0 in mixedlist
True
>>> 1.1 in mixedlist
False
>>> 'blabla' in mixedlist
True
混合列表=[1,2.3,'blabla'] >>>类型(混合列表[0]) >>>类型(混合列表[1]) >>>类型(混合列表[2]) >>>混合列表中的1个 符合事实的 >>>混合列表中的1.0 符合事实的 >>>混合列表中的1.1 错误的 >>>混合列表中的“blabla” 符合事实的
这是因为
中的
进行了
=
比较,
1==1.0
True
,而
1==1.1
2.3==1.1
'blablabla'==1.1
都是
错误的

对于容器类型,如list、tuple、set、frozenset、dict或collections.deque,表达式
y中的x
相当于
any(x是e或x==e表示y中的e)


我刚刚注意到
1.0==1
True
。也许这是相关的?这是有意义的,因为
1==1.0
…你会更惊讶地看到:
True in[1,2]
也会返回
True
a in b
基本上类似于
any(a是值或a==value in b)
-
1.0不是1
,但是
1.0==1
。因为
1.0==1
@谢谢您添加参考!非常感谢,现在这很有道理!