Python Diferencia entre invertido (list) y list.sort (reverse = True)

Cuál es la diferencia entre

mylist = reversed(sorted(mylist)) 

vs

 mylist = sorted(mylist, reverse=True) 

¿Por qué uno sería usado sobre el otro?

¿Qué tal para una ordenación estable en múltiples columnas, como

 mylist.sort(key=itemgetter(1)) mylist.sort(key=itemgetter(0)) mylist.reverse() 

es esto lo mismo que

 mylist.sort(key=itemgetter(1), reverse=True) mylist.sort(key=itemgetter(0), reverse=True) 

?

Has acertado exactamente en la diferencia. Debido a que Timsort es estable, la clasificación en sentido inverso frente a la reversión de ordenación dejará a los elementos sin clasificar en orden inverso.

 >>> s = ((2, 3, 4), (1, 2, 3), (1, 2, 2)) >>> sorted(s, key=operator.itemgetter(0, 1), reverse=True) [(2, 3, 4), (1, 2, 3), (1, 2, 2)] >>> list(reversed(sorted(s, key=operator.itemgetter(0, 1)))) [(2, 3, 4), (1, 2, 2), (1, 2, 3)] 

El invariante interesante es: list(reversed(sorted(reversed(data)))) == sorted(data, reverse=True) .

Los otros encuestados tienen razón en que la diferencia tiene que ver con la estabilidad de clasificación que preserva el orden de las claves iguales. Y también ordenado () devolviendo una lista mientras está invertido () devuelve un iterador.

Obtienes una lista para sorted() pero reversed() devuelve un iterador