Но в этом случае при ni = 0 мне вернут пустой список, вместо полного.
То есть способ с помощью срезов не даёт всего множества возможных результатов.
Надо костыли лепить
Может лекарство есть?
Думаю что не очень подходящий форум для таких вопросов, лучше бы спросили это на чисто программерском форуме, где обсуждаются бинарные деревья и т.п.
Хотя полагаю и тут найдутся те, кто сможет вам помочь.
Первый способ конечно работает, он просто менее нагляден.
Второй для ni = 0 возвращает пустой список, ну нет в Питоне -0, а когда подставляю число с плавающей точкой -0.0, ругается дайте мне целое: TypeError: slice indices must be integers or None or have an __index__ method