Как ограничить целое число до некоторого диапазона?

У меня есть следующий код:

new_index = index + offset
if new_index < 0:
    new_index = 0
if new_index >= len(mylist):
    new_index = len(mylist) - 1
return mylist[new_index]

По сути, я вычисляю новый индекс и использую его, чтобы найти какой-нибудь элемент из списка. Чтобы убедиться, что индекс находится внутри границ списка, мне нужно было написать эти 2 if операторов, разбитых на 4 строки. Это довольно многословно, немного некрасиво ... Осмелюсь сказать, это довольно непитонический .

Есть ли другое более простое и компактное решение? (и многое другое pythonic )

Да, я знаю, что могу использовать , если еще в одной строке, но он не читается:

new_index = 0 if new_index < 0 else len(mylist) - 1 if new_index >= len(mylist) else new_index

Я также знаю, что могу связать max () и мин () вместе. Он более компактный, но мне кажется, что он непонятен, труднее найти ошибки, если я напечатаю его неправильно. Другими словами, я не Я считаю это очень простым.

new_index = max(0, min(new_index, len(mylist)-1))
81
задан martineau 28 July 2018 в 18:59
поделиться