¿Te resulta más fácil leer con fondo crema, un tono de color, más contraste o un texto más grande? Elige tus colores y tu texto una sola vez, para todas las páginas.

Lección gratuita

Ordenar datos y por qué importa

La lección completa está aquí para leer. Crea una cuenta gratuita para ejecutar sus comandos en un laboratorio y hacer sus cuestionarios y tareas.

Lección de 50 minSin comandos

La tienda que más vendió ayer

Tu jefa de ventas quiere saber, a primera hora, qué tienda vendió más ayer y cuál menos.

Los importes llegan en el orden en que cada tienda cerró caja. Así no se ve nada a simple vista.

Ordenados de mayor a menor, la respuesta está en la primera y en la última línea. Ordenar es uno de los trabajos que más hace un ordenador.

Al final de esta lección

Nota

Puedo ordenar datos y explicar por qué importa.

Palabras clave

PalabraQué significaEjemplo
Ordenarcolocar los datos según un criterio
Ascendentede menor a mayor
Descendentede mayor a menorsorted(sales, reverse=True)
Ordenación por selecciónbuscar el menor y ponerlo delante, una y otra vez
Intercambiocambiar de sitio dos elementos
Pasadauna vuelta completa del algoritmo sobre la lista

Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.

Ordenar sirve para encontrar y decidir

Unos datos ordenados se leen mejor: los extremos están al principio y al final. También permiten la búsqueda binaria, que solo funciona con una lista ordenada.

En Python, sorted(lista) devuelve una lista nueva ordenada y deja la original igual. lista.sort() ordena la propia lista. Con reverse=True el orden es descendente.

Prueba: ordenar las ventas

Código: python
# Importe de las ventas de cada tienda ayer, en euros.
sales = [1250, 980, 2310, 640, 1875]

print("Sin ordenar:", sales)
print("De menor a mayor:", sorted(sales))
print("De mayor a menor:", sorted(sales, reverse=True))
print("La lista original no cambia:", sales)

sales.sort()                 # sort() cambia la propia lista
print("Tras sort():", sales)

# Los números guardados como texto se ordenan letra a letra.
codes = ["10", "9", "100", "25"]
print("Texto ordenado:", sorted(codes))

# Cambia codes por números sin comillas: [10, 9, 100, 25], y ejecuta.

Un error frecuente

Advertencia

Mucha gente cree que "100" va detrás de "9" al ordenar. Eso solo pasa con números. Si los datos son texto, se comparan letra a letra, y "1" va antes que "9". Convierte los datos a número antes de ordenar, por ejemplo con int().

La ordenación por selección elige el menor

Python ya sabe ordenar, pero conviene saber cómo se hace por dentro. Es una pregunta típica de entrevista.

La ordenación por selección recorre la lista y busca el menor. Lo intercambia con el primero. Ya hay un elemento en su sitio.

Después repite con el resto: busca el menor de lo que queda y lo pone en la segunda posición. Así sigue hasta el final.

Prueba: ordenar facturas por selección

Código: python
# Ordenación por selección: busca el menor y ponlo delante.
amounts = [45, 12, 78, 30]

for i in range(len(amounts)):
    smallest = i
    for j in range(i + 1, len(amounts)):
        if amounts[j] < amounts[smallest]:
            smallest = j
    # Intercambia el menor con el elemento de la posición i.
    temp = amounts[i]
    amounts[i] = amounts[smallest]
    amounts[smallest] = temp
    print("Pasada", i + 1, ":", amounts)

# Prueba con [5, 4, 3, 2, 1] y mira cada pasada.

Ejemplo resuelto: ordenar 45, 12, 78 y 30

PasadaLista al empezarMenor de lo que quedaIntercambioLista al acabar
1[45, 12, 78, 30]1212 con 45[12, 45, 78, 30]
2[12, 45, 78, 30]3030 con 45[12, 30, 78, 45]
3[12, 30, 78, 45]4545 con 78[12, 30, 45, 78]
4[12, 30, 45, 78]78Ninguno[12, 30, 45, 78]

Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.

¿Enseñas a una clase? Asigna este módulo a tus alumnos con guía del profesor, tareas con corrección automática y un laboratorio para cada alumno.