当max()在Python中使用该函数在列表(或元组,字典等)中查找最大值时,并且最大值与并列,Python会选择哪一个?它是随机的吗?
max()
例如,如果有一个元组列表,并且key=根据元组的第一个元素选择一个最大值(使用),但是有不同的第二个元素,则这是有意义的。Python如何决定选择哪个最大?
key=
它选择看到的第一个元素。请参阅有关文档max():
如果有多个最大项,则该函数返回遇到的第一个项。这与其他排序稳定性保存工具(例如sorted(iterable, key=keyfunc, reverse=True)[0]和)一致heapq.nlargest(1, iterable, key=keyfunc)。
sorted(iterable, key=keyfunc, reverse=True)[0]
heapq.nlargest(1, iterable, key=keyfunc)
在源代码中实现此方法中./Python/bltinmodule.c通过builtin_max,它包装在更一般的min_max功能。
./Python/bltinmodule.c
builtin_max
min_max
min_max将遍历这些值并用于PyObject_RichCompareBool查看它们是否大于当前值。如果是这样,则较大的值将替换它。相等的值将被跳过。
PyObject_RichCompareBool
结果是在平局的情况下将选择第一个最大值。