С помощью NaN можно получить список, который не будет правильно сортироваться:
--> NaN = float('nan')
--> spam = [1, 2, NaN, 3, NaN, 4, 5, 7, NaN]
--> sorted(spam)
[1, 2, nan, 3, nan, 4, 5, 7, nan]
Я создаю Null
объект, который будет вести себя примерно так же, как NaN
, с семантикой, согласно которой, если возвращаемый объект равен Null
, его фактическое значение неизвестно. Объект Null
также сможет взаимодействовать с любым другим типом объекта (int
, float
, str
, bool
и т. Д.), Но любое взаимодействие приведет к Null
.
С точки зрения пуриста, если оно неизвестно, то результаты сравнения также неизвестны, поскольку фактическое значение может быть больше, меньше или равно значению, с которым сравнивается.
С практической точки зрения список с нулями, разбросанными повсюду, является болью в задней части.
Так что я сильно склоняюсь к осуществлению сравнений, чтобы нулевые объекты были меньше других объектов, поэтому они всегда будут сортироваться вместе.
Конечно, я всегда мог уклониться от этой проблемы и заставить пользователя реализовать пользовательские ключи сортировки.
Есть мысли / советы / критика / и т. Д.?