¿Cómo sujetar un número entero a algún rango?

Tengo el siguiente código:

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]

Básicamente, calculo un nuevo índice y lo uso para encontrar algún elemento de una lista. Para asegurarme de que el índice está dentro de los límites de la lista, necesitaba escribir esos 2if declaraciones repartidas en 4 líneas. Eso es bastante detallado, un poco feo ... Me atrevo a decir, es bastanteno pitónico.

¿Hay alguna otra solución más simple y compacta? (y máspitónico)

Sí, sé que puedo usarif else en una línea, pero no es legible:

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

También sé que puedo encadenarmax() ymin() juntos. Es más compacto, pero siento que es un poco oscuro, más difícil de encontrar errores si lo escribo mal. En otras palabras, no me parece muy sencillo.

new_index = max(0, min(new_index, len(mylist)-1))

Respuestas a la pregunta(9)

Su respuesta a la pregunta