Tengo una lista como esta

numbers = [1 ,4,2,6,7,3]

Quiero organizar esta lista en orden descendente.

# #

numbers.sort().reverse()
print(numbers)

Esto es lo que probé. Pero no funciona, solo muestra un mensaje de error.

number.sort()
number.reverse()
print(numbers)

Esto funciona bien, pero parece demasiado largo.

¿Qué le pasa al primero? ¿Y por qué no puedo adjuntar dos funciones en caso de 'numbers.sort().reverse()'? ¿Por qué algunos códigos funcionan bien unidos, mientras que otros no?

¡Muchas gracias!

-2
서영빈 11 oct. 2019 a las 18:47

4 respuestas

La mejor respuesta

Depende de lo que devuelvan las funciones. list.sort devuelve None porque modifica la lista en su lugar en lugar de devolver una nueva lista. Puede pasar reverse=True a sort para lograr lo que desea sin la función adicional. Podría hacer lo mismo con la función sorted que produce una nueva lista:

l = [1, 2, 1]
print(sorted(l, reverse=True)) # [2, 1, 1]
print(l) # [1, 2, 1]
l.sort(reverse=True)
print(l) # [2, 1, 1]
2
Patrick Haugh 11 oct. 2019 a las 15:52

Esto se debe a que la ordenación no devuelve una lista y, por lo tanto, no puede aplicar una ordenación a un None type

Está ordenando inplace, por ejemplo, cambiando el orden de los elementos de su matriz en la misma instancia

No recibe una copia ordenada de su matriz cuando hace la ordenación, básicamente

list_ = [1, 2, 3, 4, 2, 3, 7]
print(list_.sort()) # None

Para hacer todo en la misma línea, puede hacer algo como:

sorted(list_, reverse=True)
1
Nikaido 11 oct. 2019 a las 15:59

Es porque sort simplemente ordena la lista actual pero no devuelve nada.

Use algo como new= sorted(l)[::-1]

1
Kevin Eaverquepedo 11 oct. 2019 a las 15:53

En Python sort() tiene un parámetro incorporado reverse:

numbers.sort(reverse=True)

Tampoco devuelve un valor; más bien simplemente manipula la lista a la que se llamó, por lo que .reverse() después de eso no verá un valor para revertir.

2
RyanHx 11 oct. 2019 a las 15:52
58344662