Esta es la solución al Ejercicio #14: Por el siguiente mayor.
Ya es costumbre en este bloque de ejercicios (y en la programación en general) que un problema se pueda resolver de varias formas.
A continuación, te muestro algunas de las soluciones más pythónicas al problema planteado.
Solución 1
def siguiente_mayor(lst): asc = sorted(lst) + [-1] return [asc[asc.index(i) + 1] for i in lst]
Solución 2
def siguiente_mayor(lst): srt_lst = sorted(lst) for i in range(len(lst)): if lst[i] == max(lst): lst[i] = -1 else: lst[i] = srt_lst[srt_lst.index(lst[i]) + 1] return lst
Solución 3
def siguiente_mayor(lst): s = sorted(lst) ind = lst.index(max(lst)) for i in range(len(lst)): if lst[i] != max(lst): lst[i] = s[s.index(lst[i]) + 1] lst[ind] = -1 return lst