Introdução
Neste laboratório, você aprenderá como determinar se uma lista é um palíndromo em Python. Um palíndromo é uma sequência que se lê da mesma forma para frente e para trás. O laboratório guia você na criação de um script Python para identificar palíndromos de lista.
Você explorará dois métodos: comparar uma lista com sua versão invertida usando slicing (fatiamento), e inverter explicitamente a lista para comparação. O laboratório fornece exemplos de código e instruções sobre como executar o script e interpretar a saída, demonstrando se as listas fornecidas são palíndromos ou não.
Entenda os Palíndromos de Listas
Nesta etapa, você aprenderá sobre palíndromos de lista e como identificá-los em Python. Um palíndromo é uma sequência que se lê da mesma forma para frente e para trás. Por exemplo, a palavra "arara" é um palíndromo. No contexto de listas, um palíndromo de lista é uma lista cujos elementos são os mesmos quando lidos do início ao fim ou do fim ao início.
Vamos começar criando um script Python para explorar palíndromos de lista.
Abra seu editor VS Code.
Crie um novo arquivo chamado
palindrome.pyno diretório~/project.touch ~/project/palindrome.pyAbra o arquivo
palindrome.pyno editor.
Agora, vamos adicionar algum código ao arquivo palindrome.py para entender como verificar se uma lista é um palíndromo.
def is_palindrome(lst):
return lst == lst[::-1]
## Example lists
list1 = [1, 2, 3, 2, 1]
list2 = [1, 2, 3, 4, 5]
## Check if the lists are palindromes
print(f"{list1} is a palindrome: {is_palindrome(list1)}")
print(f"{list2} is a palindrome: {is_palindrome(list2)}")
Neste código:
- Definimos uma função
is_palindrome(lst)que recebe uma listalstcomo entrada. - Dentro da função, comparamos a lista com sua versão invertida usando slicing
lst[::-1]. - A função retorna
Truese a lista for um palíndromo eFalsecaso contrário. - Criamos duas listas de exemplo,
list1que é um palíndromo, elist2que não é. - Usamos a função
print()para exibir se cada lista é um palíndromo ou não.
Para executar o script, execute o seguinte comando no terminal:
python ~/project/palindrome.py
Você deve ver a seguinte saída:
[1, 2, 3, 2, 1] is a palindrome: True
[1, 2, 3, 4, 5] is a palindrome: False
Esta saída confirma que list1 é um palíndromo, e list2 não é.
Comparar com Lista Invertida
Nesta etapa, você explorará outro método para verificar se uma lista é um palíndromo, invertendo explicitamente a lista e comparando-a com a lista original. Essa abordagem fornece uma compreensão mais detalhada da verificação de palíndromo.
Vamos modificar o arquivo palindrome.py que você criou na etapa anterior.
Abra o arquivo
palindrome.pyno seu editor VS Code.Modifique o conteúdo do arquivo
palindrome.pyda seguinte forma:
def is_palindrome(lst):
reversed_lst = lst[::-1]
return lst == reversed_lst
## Example lists
list1 = [1, 2, 3, 2, 1]
list2 = [1, 2, 3, 4, 5]
## Check if the lists are palindromes
print(f"{list1} is a palindrome: {is_palindrome(list1)}")
print(f"{list2} is a palindrome: {is_palindrome(list2)}")
Neste código modificado:
- Dentro da função
is_palindrome(lst), criamos uma cópia invertida da lista de entradalstusando slicinglst[::-1]e a armazenamos na variávelreversed_lst. - Em seguida, comparamos a lista original
lstcom a lista invertidareversed_lstusando o operador de igualdade==. - A função retorna
Truese a lista original for igual à lista invertida (ou seja, é um palíndromo) eFalsecaso contrário.
Para executar o script, execute o seguinte comando no terminal:
python ~/project/palindrome.py
Você deve ver a mesma saída da etapa anterior:
[1, 2, 3, 2, 1] is a palindrome: True
[1, 2, 3, 4, 5] is a palindrome: False
Esta saída confirma que list1 é um palíndromo, e list2 não é, usando o método de inversão explícita. Essa abordagem torna a lógica mais explícita e fácil de entender.
Usar Slicing para Inversão
Nesta etapa, você se concentrará especificamente em como o slicing é usado para inverter uma lista em Python. Slicing é um recurso poderoso que permite extrair porções de uma lista, e também pode ser usado para criar uma cópia invertida da lista.
Vamos revisitar o arquivo palindrome.py e examinar a técnica de slicing mais de perto.
Abra o arquivo
palindrome.pyno seu editor VS Code.Certifique-se de que o conteúdo do arquivo
palindrome.pyseja o seguinte:
def is_palindrome(lst):
reversed_lst = lst[::-1]
return lst == reversed_lst
## Example lists
list1 = [1, 2, 3, 2, 1]
list2 = [1, 2, 3, 4, 5]
## Check if the lists are palindromes
print(f"{list1} is a palindrome: {is_palindrome(list1)}")
print(f"{list2} is a palindrome: {is_palindrome(list2)}")
A parte chave deste código é lst[::-1]. Esta é uma operação de slicing que cria uma cópia invertida da lista. Vamos detalhar:
lst[:]criaria uma cópia de toda a lista.lst[start:end]criaria uma fatia (slice) do índicestartatéend-1.lst[start:end:step]permite que você especifique umstep(passo). Um passo de-1significa iterar para trás pela lista.- Ao omitir
starteende usar um passo de-1(ou seja,lst[::-1]), você cria uma cópia invertida de toda a lista.
Para ilustrar ainda mais isso, vamos adicionar algumas instruções print para ver o efeito do slicing:
def is_palindrome(lst):
reversed_lst = lst[::-1]
print(f"Original list: {lst}")
print(f"Reversed list: {reversed_lst}")
return lst == reversed_lst
## Example lists
list1 = [1, 2, 3, 2, 1]
list2 = [1, 2, 3, 4, 5]
## Check if the lists are palindromes
print(f"{list1} is a palindrome: {is_palindrome(list1)}")
print(f"{list2} is a palindrome: {is_palindrome(list2)}")
Agora, execute o script novamente:
python ~/project/palindrome.py
Você verá as listas originais e invertidas impressas antes do resultado da verificação de palíndromo:
Original list: [1, 2, 3, 2, 1]
Reversed list: [1, 2, 3, 2, 1]
[1, 2, 3, 2, 1] is a palindrome: True
Original list: [1, 2, 3, 4, 5]
Reversed list: [5, 4, 3, 2, 1]
[1, 2, 3, 4, 5] is a palindrome: False
Isso demonstra como o slicing com [::-1] inverte efetivamente a lista, que é então usada para determinar se a lista original é um palíndromo.
Resumo
Neste laboratório, você aprendeu como identificar palíndromos de listas em Python, que são listas que são lidas da mesma forma para frente e para trás. Você criou um script palindrome.py contendo uma função is_palindrome(lst) que usa slicing (lst[::-1]) para inverter eficientemente uma lista e compará-la com a original, retornando True se for um palíndromo e False caso contrário.
O script foi testado com duas listas de exemplo, list1 (um palíndromo) e list2 (não um palíndromo), e a saída confirmou a capacidade da função de identificar corretamente os palíndromos. O laboratório também introduziu o conceito de inversão explícita da lista para comparação, embora o conteúdo fornecido tenha sido truncado.



