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