Verificar com all() e zip()
Nesta etapa, você aprenderá como usar as funções all() e zip() em conjunto com tuplas ordenadas para realizar verificações e comparações mais avançadas.
A função all() é uma função embutida do Python que retorna True se todos os elementos de um iterável forem verdadeiros (ou se o iterável estiver vazio). Ela é frequentemente usada para verificar se uma condição é atendida para todos os elementos em uma sequência.
A função zip() é outra função embutida do Python que recebe vários iteráveis como argumentos e retorna um iterador de tuplas. Cada tupla contém os elementos correspondentes dos iteráveis de entrada. É útil para emparelhar elementos de diferentes sequências para comparação ou outras operações.
Vamos ver como essas funções podem ser usadas com tuplas ordenadas:
- Abra o editor VS Code no ambiente LabEx.
- Modifique o arquivo existente
sort_tuple.py no diretório ~/project, ou crie-o se ele não existir.
- Copie e cole o seguinte código em
sort_tuple.py:
## Checking if a tuple is sorted using all() and zip()
def is_sorted(data):
## zip(data, data[1:]) pairs consecutive elements
## all(x <= y for x, y in ...) checks if each pair is in ascending order
return all(x <= y for x, y in zip(data, data[1:]))
my_tuple1 = (1, 2, 3, 4, 5)
my_tuple2 = (5, 2, 8, 1, 9)
print("Tuple 1:", my_tuple1, "is sorted:", is_sorted(my_tuple1))
print("Tuple 2:", my_tuple2, "is sorted:", is_sorted(my_tuple2))
Este código define uma função is_sorted() que verifica se uma determinada tupla está ordenada em ordem ascendente. Ele usa zip() para emparelhar elementos consecutivos da tupla e all() para verificar se cada par está em ordem ascendente.
Para executar o script, abra um terminal no VS Code (você pode encontrá-lo no painel inferior) e execute o seguinte comando:
python sort_tuple.py
Você deve ver a seguinte saída:
Tuple 1: (1, 2, 3, 4, 5) is sorted: True
Tuple 2: (5, 2, 8, 1, 9) is sorted: False
Como você pode ver, a função is_sorted() identifica corretamente se as tuplas estão ordenadas ou não.
Vamos estender este exemplo para verificar se duas tuplas são idênticas após a ordenação:
## Checking if two tuples are identical after sorting
def are_identical_after_sorting(tuple1, tuple2):
return sorted(tuple1) == sorted(tuple2)
tuple_a = (3, 1, 4, 1, 5)
tuple_b = (1, 5, 1, 4, 3)
tuple_c = (1, 2, 3, 4, 5)
print("Tuple A:", tuple_a, "and Tuple B:", tuple_b, "are identical after sorting:", are_identical_after_sorting(tuple_a, tuple_b))
print("Tuple A:", tuple_a, "and Tuple C:", tuple_c, "are identical after sorting:", are_identical_after_sorting(tuple_a, tuple_c))
Adicione este código ao seu arquivo sort_tuple.py e execute-o novamente:
python sort_tuple.py
A saída agora deve incluir:
Tuple A: (3, 1, 4, 1, 5) and Tuple B: (1, 5, 1, 4, 3) are identical after sorting: True
Tuple A: (3, 1, 4, 1, 5) and Tuple C: (1, 2, 3, 4, 5) are identical after sorting: False
Neste exemplo, a função are_identical_after_sorting() verifica se duas tuplas contêm os mesmos elementos, independentemente de sua ordem original. Ele ordena ambas as tuplas e, em seguida, compara as listas ordenadas.