我在胡闹,偶然发现了一些我不明白的东西。。。在
问题1:
a = [1,2,3]
b = [1,2,3,4]
len(a) < b
结果是正确的,但这是否真的比较了两个列表的长度?似乎这也是真的。。。在
^{pr2}$
问题2:
当我们尝试比较整数和列表时会发生什么?为什么这些都是真的(我假设有一个普遍的解释…)。。。在
3 < b
20 < b
float('inf') < b
None < b
(lambda x: (x**x)**x) < b
…这些是假的?在
'poo' < b
'0' < b
Tags:
在Python2.x中,不可直接比较的不同类型的项将使用其类型的名称进行比较。所以所有整数都小于所有列表,因为}s
"int"
小于"list"
。出于同样的原因,所有str
都大于所有int
s和{Python3中删除了这种不直观的行为(我假设引入这种行为是为了在异构列表中对类似类型的项进行排序),这为这些比较带来了一个异常。在
来自数据类型上的docs:
以及
尤其是
其他答案很好地解释了正在发生的事情,但是比较长度的正确方法是
相关问题 更多 >
编程相关推荐