Estructuras de datos básicas: Listas y Tuplas

Educator Courses » Programación básica en Python » Estructuras de datos básicas: Listas y Tuplas

Ordenamiento

A veces recibimos datos de forma desordenada o queremos representarlos en un orden en particular. Las listas pueden ser ordenadas (las tuplas no porque recordemos, no son mutables). Entre todas las formas que tenemos para ordernar una lista hay dos que destacan:

.sort()

sort es el método dentro del objeto lista que ordenará los elementos de la lista “en sitio”. El llamar a este metodo no devuelve ningun valor, el ordenamiento se hace en el mismo objeto.

>>> a
[4, 5, 76, 8, 9, 2, 4, 5, 2, 35, 8, 5, 69]
>>> a.sort()
>>> a
[2, 2, 4, 4, 5, 5, 5, 8, 8, 9, 35, 69, 76]

sorted()

sorted() por otro lado, es una función que toma una lista y devuelve una copia de esta lista ordenada, la primera lista no se modifica.

>>> b
[4, 5, 76, 8, 9, 2, 4, 5, 2, 35, 8, 5, 69]
>>> sorted(b)
[2, 2, 4, 4, 5, 5, 5, 8, 8, 9, 35, 69, 76]
>>> b
[4, 5, 76, 8, 9, 2, 4, 5, 2, 35, 8, 5, 69]

.reverse()

El método reverse hace lo mismo que el método sort(), sin embargo ordena los elementos de forma inversa.

>>> a.reverse()
>>> a
[76, 69, 35, 9, 8, 8, 5, 5, 5, 4, 4, 2, 2]

Ordenando cuando el valor no está en la representación del objeto

Habrá ocasiones en que necesitemos ordenar objetos pero su valor no es el valor que representan o simplemente queremos meter la mano sobre como determinar el valor a comprar, para esto sort() y sorted() tienen un parámetro que se llama “key” donde podemos hacer referencia a una función que debe devolver un valor que se usará para el ordenamiento.

>>> a = ["uno - 1", "tres - 3","nueve -9", "cinco - 6", "dos - 2", ]
>>> a
['uno - 1', 'tres - 3', 'nueve -9', 'cinco - 6', 'dos - 2']
>>> def por_ultimo_char(cadena):
...     return int(cadena[-1])
...
>>> sorted(a, key=por_ultimo_char)
['uno - 1', 'dos - 2', 'tres - 3', 'cinco - 6', 'nueve -9']
>>>

Como podemos ver, en `por_ultimo_elemento` se devuelve el último caracter de la cadena convertido a entero, de forma que para sorted sea fácil determinar cual va primero y cual despues. Si no usaramos “key” y al ser todos los elementos una cadena sorted hubiera hecho una comparación por valor de caracteres (ordenamiento alfabético).

>>> sorted(a)
['cinco - 6', 'dos - 2', 'nueve -9', 'tres - 3', 'uno - 1']

 


Si te gusta el tutorial, por favor mándame un mensaje, mi twitter: @markuzmx , tal vez te gustó tanto que prefieras hacer una donación via paypal la cantidad tu la pones ? Gracias por apoyarme.

Loading

You must be logged in to take the quiz.