J'ai le code suivant:
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]
Fondamentalement, je calcule un nouvel indice et l'utiliser pour trouver un élément dans une liste. Afin de garantir que l'index est à l'intérieur des limites de la liste, j'avais besoin d'écrire ces 2 if
états répartis en 4 lignes. C'est très bavard, un peu moche... si j'Ose dire, c'est assez onu-pythonic.
Est-il un autre plus simple et plus compact solution? (et plus pythonic)
Oui, je sais que je peux utiliser if else
en une seule ligne, mais il n'est pas lisible:
new_index = 0 if new_index < 0 else len(mylist) - 1 if new_index >= len(mylist) else new_index
Je sais aussi que je peux de la chaîne d' max()
et min()
ensemble. Il est plus compact, mais je pense qu'il est un peu obscur, de plus en plus difficile de trouver des bugs si je tape mal. En d'autres termes, je ne trouve pas ça très simple.
new_index = max(0, min(new_index, len(mylist)-1))