哪位好心人解释一下,
a=[0, True, False, 1]
a.sort()
max(a)
min(a)
排序后a的值变为[0, False, True, 1]。当说 True 等于 1 且 False 等于 0 时,python 根据什么原理对原始列表进行这样的排序。
max(a) 给出 True 作为结果 min(a) 结果为 0
Python 如何将布尔值 True 视为大于 1? Python 如何将 0 视为小于 False?
无法理解Python如何比较布尔值和整数。
提前致谢。
Python 不会将
True
视为大于 1。如果有多个最大元素,它只返回第一个。引用自
官方文档:
如果多个项目都是最大的,该函数返回遇到的第一个。这与其他排序稳定性保持工具一致......
min()
也是如此。 max()
返回 True
,因为它等于 1
并且在输入中出现得更早,而不是因为 True
大于 1
。证明这一点的是,如果您在 1
中切换 True
和 a
,您会得到 1
为 max(a)
。
虽然你没有明确询问,但我想补充一点,Python 中的
sort()
是稳定的。 0
和 False
比较相等,但在原始 0
中,False
位于 a
之前,因此在 a.sort()
之后,0
排在 False
之前。同样的道理为什么 True
出现在 1
之前。