Cómo comprobar si una lista está ordenada (en cualquier orden) en Python

PythonPythonBeginner
Practicar Ahora

💡 Este tutorial está traducido por IA desde la versión en inglés. Para ver la versión original, puedes hacer clic aquí

Introducción

En este laboratorio, aprenderás cómo comprobar si una lista está ordenada en Python, independientemente de si está en orden ascendente o descendente. Explorarás los fundamentos de las listas ordenadas y cómo se utilizan en diversas tareas de programación.

El laboratorio te guía a través de la creación y manipulación de listas utilizando las funciones integradas de Python. Aprenderás cómo utilizar la función sorted() para crear nuevas listas ordenadas a partir de las existentes, tanto en orden ascendente como en orden descendente. El laboratorio también demuestra cómo ordenar listas de cadenas de texto (strings).


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL python(("Python")) -.-> python/ControlFlowGroup(["Control Flow"]) python(("Python")) -.-> python/DataStructuresGroup(["Data Structures"]) python(("Python")) -.-> python/FunctionsGroup(["Functions"]) python(("Python")) -.-> python/PythonStandardLibraryGroup(["Python Standard Library"]) python/ControlFlowGroup -.-> python/conditional_statements("Conditional Statements") python/ControlFlowGroup -.-> python/for_loops("For Loops") python/DataStructuresGroup -.-> python/lists("Lists") python/FunctionsGroup -.-> python/build_in_functions("Build-in Functions") python/PythonStandardLibraryGroup -.-> python/data_collections("Data Collections") subgraph Lab Skills python/conditional_statements -.-> lab-559535{{"Cómo comprobar si una lista está ordenada (en cualquier orden) en Python"}} python/for_loops -.-> lab-559535{{"Cómo comprobar si una lista está ordenada (en cualquier orden) en Python"}} python/lists -.-> lab-559535{{"Cómo comprobar si una lista está ordenada (en cualquier orden) en Python"}} python/build_in_functions -.-> lab-559535{{"Cómo comprobar si una lista está ordenada (en cualquier orden) en Python"}} python/data_collections -.-> lab-559535{{"Cómo comprobar si una lista está ordenada (en cualquier orden) en Python"}} end

Explorar listas ordenadas

En este paso, aprenderás sobre las listas ordenadas en Python. Las listas ordenadas son fundamentales en la programación para tareas como la búsqueda, el análisis de datos y la optimización de algoritmos. Python proporciona funciones y métodos integrados para crear y manipular fácilmente listas ordenadas.

Primero, creemos una lista simple de números:

## Create a list of numbers
numbers = [5, 1, 4, 2, 8]
print(numbers)

Guarda el código anterior en un archivo llamado sort_list.py en tu directorio ~/project. Puedes utilizar el editor VS Code para crear este archivo.

Ahora, ejecuta el script utilizando el siguiente comando en la terminal:

python ~/project/sort_list.py

Deberías ver impresa la lista original:

[5, 1, 4, 2, 8]

Para ordenar esta lista, puedes utilizar la función sorted(). La función sorted() devuelve una nueva lista ordenada a partir de los elementos de un iterable.

## Create a list of numbers
numbers = [5, 1, 4, 2, 8]

## Sort the list using the sorted() function
sorted_numbers = sorted(numbers)

## Print the sorted list
print(sorted_numbers)

Modifica tu archivo sort_list.py para incluir el código anterior. Luego, ejecuta el script nuevamente:

python ~/project/sort_list.py

Ahora, deberías ver impresa la lista ordenada:

[1, 2, 4, 5, 8]

Ten en cuenta que la lista original numbers permanece sin cambios. La función sorted() crea una nueva lista ordenada.

Si quieres ordenar la lista en orden descendente, puedes utilizar el parámetro reverse:

## Create a list of numbers
numbers = [5, 1, 4, 2, 8]

## Sort the list in descending order
sorted_numbers = sorted(numbers, reverse=True)

## Print the sorted list
print(sorted_numbers)

Modifica tu archivo sort_list.py para incluir el código anterior. Luego, ejecuta el script nuevamente:

python ~/project/sort_list.py

Deberías ver la lista ordenada en orden descendente:

[8, 5, 4, 2, 1]

También puedes ordenar listas de cadenas de texto (strings):

## Create a list of strings
names = ["Alice", "Bob", "Charlie", "David"]

## Sort the list of strings
sorted_names = sorted(names)

## Print the sorted list
print(sorted_names)

Modifica tu archivo sort_list.py para incluir el código anterior. Luego, ejecuta el script nuevamente:

python ~/project/sort_list.py

Deberías ver la lista de nombres ordenada:

['Alice', 'Bob', 'Charlie', 'David']

Las cadenas de texto se ordenan alfabéticamente.

Comprobar orden ascendente o descendente

En este paso, aprenderás cómo comprobar si una lista está ordenada en orden ascendente o descendente. Esta es una tarea común en muchos escenarios de programación, como la validación de datos y el diseño de algoritmos.

Para determinar si una lista está ordenada, puedes iterar a través de la lista y comparar elementos adyacentes. Si cada elemento es menor o igual que el siguiente elemento, la lista está ordenada en orden ascendente. Si cada elemento es mayor o igual que el siguiente elemento, la lista está ordenada en orden descendente.

Comencemos creando un script de Python llamado check_order.py en tu directorio ~/project utilizando el editor VS Code.

Aquí está el código para comprobar si una lista está ordenada en orden ascendente:

def is_ascending(lst):
    for i in range(len(lst) - 1):
        if lst[i] > lst[i + 1]:
            return False
    return True

numbers = [1, 2, 3, 4, 5]
print(is_ascending(numbers))

numbers = [1, 3, 2, 4, 5]
print(is_ascending(numbers))

Guarda el código anterior en check_order.py. Ahora, ejecuta el script utilizando el siguiente comando:

python ~/project/check_order.py

Deberías ver la siguiente salida:

True
False

La primera lista [1, 2, 3, 4, 5] está ordenada en orden ascendente, por lo que la función devuelve True. La segunda lista [1, 3, 2, 4, 5] no está ordenada en orden ascendente, por lo que la función devuelve False.

Ahora, agreguemos código para comprobar si una lista está ordenada en orden descendente:

def is_descending(lst):
    for i in range(len(lst) - 1):
        if lst[i] < lst[i + 1]:
            return False
    return True

numbers = [5, 4, 3, 2, 1]
print(is_descending(numbers))

numbers = [5, 2, 3, 2, 1]
print(is_descending(numbers))

Agrega el código anterior a tu archivo check_order.py. El archivo check_order.py completo debería verse así:

def is_ascending(lst):
    for i in range(len(lst) - 1):
        if lst[i] > lst[i + 1]:
            return False
    return True

def is_descending(lst):
    for i in range(len(lst) - 1):
        if lst[i] < lst[i + 1]:
            return False
    return True

numbers = [1, 2, 3, 4, 5]
print(is_ascending(numbers))

numbers = [1, 3, 2, 4, 5]
print(is_ascending(numbers))

numbers = [5, 4, 3, 2, 1]
print(is_descending(numbers))

numbers = [5, 2, 3, 2, 1]
print(is_descending(numbers))

Ejecuta el script nuevamente:

python ~/project/check_order.py

Deberías ver la siguiente salida:

True
False
True
False

La lista [5, 4, 3, 2, 1] está ordenada en orden descendente, por lo que la función devuelve True. La lista [5, 2, 3, 2, 1] no está ordenada en orden descendente, por lo que la función devuelve False.

Este ejercicio demuestra cómo comprobar si una lista está ordenada en orden ascendente o descendente utilizando Python.

Usar sorted() para comparación

En este paso, aprenderás cómo usar la función sorted() para comparar dos listas. Comparar listas es una tarea común en la programación, especialmente cuando necesitas verificar si dos conjuntos de datos son idénticos o si una lista es un subconjunto de otra.

La función sorted() se puede utilizar para ordenar ambas listas antes de compararlas. Esto asegura que el orden de los elementos no afecte el resultado de la comparación.

Vamos a crear un script de Python llamado compare_lists.py en tu directorio ~/project utilizando el editor VS Code.

Aquí está el código para comparar dos listas utilizando la función sorted():

def compare_lists(list1, list2):
    sorted_list1 = sorted(list1)
    sorted_list2 = sorted(list2)
    if sorted_list1 == sorted_list2:
        return True
    else:
        return False

list_a = [3, 1, 2]
list_b = [1, 2, 3]
print(compare_lists(list_a, list_b))

list_c = [3, 1, 2]
list_d = [1, 2, 4]
print(compare_lists(list_c, list_d))

Guarda el código anterior en compare_lists.py. Ahora, ejecuta el script utilizando el siguiente comando:

python ~/project/compare_lists.py

Deberías ver la siguiente salida:

True
False

Las listas list_a y list_b contienen los mismos elementos, por lo que la función devuelve True. Las listas list_c y list_d no contienen los mismos elementos, por lo que la función devuelve False.

Consideremos otro ejemplo con cadenas de texto (strings):

def compare_lists(list1, list2):
    sorted_list1 = sorted(list1)
    sorted_list2 = sorted(list2)
    if sorted_list1 == sorted_list2:
        return True
    else:
        return False

list_e = ["apple", "banana", "cherry"]
list_f = ["cherry", "apple", "banana"]
print(compare_lists(list_e, list_f))

list_g = ["apple", "banana", "cherry"]
list_h = ["apple", "banana", "date"]
print(compare_lists(list_g, list_h))

Agrega el código anterior a tu archivo compare_lists.py. El archivo compare_lists.py completo debería verse así:

def compare_lists(list1, list2):
    sorted_list1 = sorted(list1)
    sorted_list2 = sorted(list2)
    if sorted_list1 == sorted_list2:
        return True
    else:
        return False

list_a = [3, 1, 2]
list_b = [1, 2, 3]
print(compare_lists(list_a, list_b))

list_c = [3, 1, 2]
list_d = [1, 2, 4]
print(compare_lists(list_c, list_d))

list_e = ["apple", "banana", "cherry"]
list_f = ["cherry", "apple", "banana"]
print(compare_lists(list_e, list_f))

list_g = ["apple", "banana", "cherry"]
list_h = ["apple", "banana", "date"]
print(compare_lists(list_g, list_h))

Ejecuta el script nuevamente:

python ~/project/compare_lists.py

Deberías ver la siguiente salida:

True
False
True
False

Este ejemplo demuestra cómo usar la función sorted() para comparar listas de cadenas de texto.

Resumen

En este laboratorio (lab), exploraste listas ordenadas en Python y aprendiste cómo usar la función sorted() para crear nuevas listas ordenadas a partir de listas existentes. Viste cómo ordenar una lista de números en orden ascendente y descendente utilizando el parámetro reverse.

El laboratorio demostró cómo la lista original permanece sin cambios cuando se utiliza sorted(), ya que esta función devuelve una nueva lista ordenada. También aprendiste que sorted() se puede aplicar a listas de cadenas de texto (strings), aunque el contenido proporcionado se truncó antes de demostrar esto.