Como Verificar se uma Lista Está Ordenada (Qualquer Ordem) em Python

PythonBeginner
Pratique Agora

Introdução

Neste laboratório, você aprenderá como verificar se uma lista está ordenada em Python, independentemente de estar em ordem crescente ou decrescente. Você explorará os fundamentos de listas ordenadas e como elas são usadas em várias tarefas de programação.

O laboratório guia você através da criação e manipulação de listas usando as funções embutidas do Python. Você aprenderá como usar a função sorted() para criar novas listas ordenadas a partir das existentes, tanto em ordem crescente quanto decrescente. O laboratório também demonstra como ordenar listas de strings.

Explorar Listas Ordenadas

Nesta etapa, você aprenderá sobre listas ordenadas em Python. Listas ordenadas são fundamentais em programação para tarefas como busca, análise de dados e otimização de algoritmos. Python fornece funções e métodos embutidos para criar e manipular facilmente listas ordenadas.

Primeiro, vamos criar uma lista simples de números:

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

Salve o código acima em um arquivo chamado sort_list.py no seu diretório ~/project. Você pode usar o editor VS Code para criar este arquivo.

Agora, execute o script usando o seguinte comando no terminal:

python ~/project/sort_list.py

Você deve ver a lista original impressa:

[5, 1, 4, 2, 8]

Para ordenar esta lista, você pode usar a função sorted(). A função sorted() retorna uma nova lista ordenada a partir dos itens em um iterável.

## 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)

Modifique seu arquivo sort_list.py para incluir o código acima. Em seguida, execute o script novamente:

python ~/project/sort_list.py

Agora, você deve ver a lista ordenada impressa:

[1, 2, 4, 5, 8]

Observe que a lista numbers original permanece inalterada. A função sorted() cria uma nova lista ordenada.

Se você quiser ordenar a lista em ordem decrescente, pode usar o 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)

Modifique seu arquivo sort_list.py para incluir o código acima. Em seguida, execute o script novamente:

python ~/project/sort_list.py

Você deve ver a lista ordenada em ordem decrescente:

[8, 5, 4, 2, 1]

Você também pode ordenar listas de 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)

Modifique seu arquivo sort_list.py para incluir o código acima. Em seguida, execute o script novamente:

python ~/project/sort_list.py

Você deve ver a lista de nomes ordenada:

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

As strings são ordenadas alfabeticamente.

Verificar Ordem Crescente ou Decrescente

Nesta etapa, você aprenderá como verificar se uma lista está ordenada em ordem crescente ou decrescente. Esta é uma tarefa comum em muitos cenários de programação, como validação de dados e design de algoritmos.

Para determinar se uma lista está ordenada, você pode iterar pela lista e comparar elementos adjacentes. Se cada elemento for menor ou igual ao elemento seguinte, a lista estará ordenada em ordem crescente. Se cada elemento for maior ou igual ao elemento seguinte, a lista estará ordenada em ordem decrescente.

Vamos começar criando um script Python chamado check_order.py no seu diretório ~/project usando o editor VS Code.

Aqui está o código para verificar se uma lista está ordenada em ordem crescente:

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))

Salve o código acima em check_order.py. Agora, execute o script usando o seguinte comando:

python ~/project/check_order.py

Você deve ver a seguinte saída:

True
False

A primeira lista [1, 2, 3, 4, 5] está ordenada em ordem crescente, então a função retorna True. A segunda lista [1, 3, 2, 4, 5] não está ordenada em ordem crescente, então a função retorna False.

Agora, vamos adicionar código para verificar se uma lista está ordenada em ordem decrescente:

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))

Adicione o código acima ao seu arquivo check_order.py. O arquivo check_order.py completo deve ser assim:

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))

Execute o script novamente:

python ~/project/check_order.py

Você deve ver a seguinte saída:

True
False
True
False

A lista [5, 4, 3, 2, 1] está ordenada em ordem decrescente, então a função retorna True. A lista [5, 2, 3, 2, 1] não está ordenada em ordem decrescente, então a função retorna False.

Este exercício demonstra como verificar se uma lista está ordenada em ordem crescente ou decrescente usando Python.

Usar sorted() para Comparação

Nesta etapa, você aprenderá como usar a função sorted() para comparar duas listas. Comparar listas é uma tarefa comum em programação, especialmente quando você precisa verificar se dois conjuntos de dados são idênticos ou se uma lista é um subconjunto de outra.

A função sorted() pode ser usada para ordenar ambas as listas antes de compará-las. Isso garante que a ordem dos elementos não afete o resultado da comparação.

Vamos criar um script Python chamado compare_lists.py no seu diretório ~/project usando o editor VS Code.

Aqui está o código para comparar duas listas usando a função 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))

Salve o código acima em compare_lists.py. Agora, execute o script usando o seguinte comando:

python ~/project/compare_lists.py

Você deve ver a seguinte saída:

True
False

As listas list_a e list_b contêm os mesmos elementos, então a função retorna True. As listas list_c e list_d não contêm os mesmos elementos, então a função retorna False.

Vamos considerar outro exemplo com 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))

Adicione o código acima ao seu arquivo compare_lists.py. O arquivo compare_lists.py completo deve ser assim:

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))

Execute o script novamente:

python ~/project/compare_lists.py

Você deve ver a seguinte saída:

True
False
True
False

Este exemplo demonstra como usar a função sorted() para comparar listas de strings.

Resumo

Neste laboratório, você explorou listas ordenadas em Python e aprendeu como usar a função sorted() para criar novas listas ordenadas a partir de listas existentes. Você viu como ordenar uma lista de números em ordem crescente e decrescente usando o parâmetro reverse.

O laboratório demonstrou como a lista original permanece inalterada ao usar sorted(), pois ela retorna uma nova lista ordenada. Você também aprendeu que sorted() pode ser aplicado a listas de strings, embora o conteúdo fornecido tenha sido truncado antes de demonstrar isso.