Python tiene dos tipos de clases: una especie método (o "función miembro ") y una función de tipo .El método de ordenación opera sobre los contenidos del objeto llamado - piénselo como una acción que el objeto está tomando para reordenarse a sí mismo. La función de ordenación es una operación sobre los datos representados por un objeto y devuelve un nuevo objeto con los mismos contenidos en un orden ordenado.
Dada una lista de números enteros llamado l
la propia lista se reordena si llamamos l.sort()
:
>>> l = [1, 5, 2341, 467, 213, 123]
>>> l.sort()
>>> l
[1, 5, 123, 213, 467, 2341]
Este método no devuelve ningún valor. ¿Pero qué pasa si intentamos asignar el resultado de l.sort()
?
>>> l = [1, 5, 2341, 467, 213, 123]
>>> r = l.sort()
>>> print(r)
None
r
ahora es realmente nada. Este es uno de esos detalles raros, un tanto molestos, que un programador probablemente olvidará después de un período de ausencia de Python (por lo que estoy escribiendo esto, así que I no se olvide de nuevo).
La función sorted()
, por el contrario, no hará nada al contenido de l
, pero devolverá una nueva lista con el mismo contenido clasificado como l
:
>>> l = [1, 5, 2341, 467, 213, 123]
>>> r = sorted(l)
>>> l
[1, 5, 2341, 467, 213, 123]
>>> r
[1, 5, 123, 213, 467, 2341]
Tenga en cuenta que la devuelve valor es no un deep copy, así que tenga cuidado acerca de las operaciones de lado effecty más de los elementos contenidos en la lista como de costumbre:
>>> spam = [8, 2, 4, 7]
>>> eggs = [3, 1, 4, 5]
>>> l = [spam, eggs]
>>> r = sorted(l)
>>> l
[[8, 2, 4, 7], [3, 1, 4, 5]]
>>> r
[[3, 1, 4, 5], [8, 2, 4, 7]]
>>> spam.sort()
>>> eggs.sort()
>>> l
[[2, 4, 7, 8], [1, 3, 4, 5]]
>>> r
[[1, 3, 4, 5], [2, 4, 7, 8]]
no me th la tinta que necesita para convertir el elemento en una cadena tantas veces. Una vez es normalmente suficiente y es más limpio hacerlo en la entrada para limpiar también. – Ben
Es solo una idea tonta, pero si quieres una lista de artículos únicos, ¿por qué no te conviertes en un conjunto? Luego puede convertirlos a una lista si lo necesita. 'Theset = conjunto (theList)' y ya está, sólo tiene que echarlo hacia atrás a la lista: 'theList = lista (Theset)' Listo. Fácil. – runlevel0