Usar el corte (slicing) para la inversión
En este paso, te centrarás específicamente en cómo se utiliza el corte (slicing) para invertir una lista en Python. El corte es una característica poderosa que te permite extraer porciones de una lista, y también se puede utilizar para crear una copia invertida de la lista.
Volvamos al archivo palindrome.py
y examinemos más de cerca la técnica de corte.
-
Abre el archivo palindrome.py
en tu editor de VS Code.
-
Asegúrate de que el contenido del archivo palindrome.py
sea el siguiente:
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)}")
La parte clave de este código es lst[::-1]
. Esta es una operación de corte que crea una copia invertida de la lista. Desglosémosla:
lst[:]
crearía una copia de toda la lista.
lst[start:end]
crearía un segmento desde el índice start
hasta end - 1
.
lst[start:end:step]
te permite especificar un step
(paso). Un paso de -1
significa iterar hacia atrás a través de la lista.
- Al omitir
start
y end
y usar un paso de -1
(es decir, lst[::-1]
), creas una copia invertida de toda la lista.
Para ilustrar esto mejor, agreguemos algunas declaraciones de impresión para ver el efecto del corte:
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)}")
Ahora, ejecuta el script nuevamente:
python ~/project/palindrome.py
Verás las listas originales e invertidas impresas antes del resultado de la comprobación de palíndromos:
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
Esto demuestra cómo el corte con [::-1]
invierte efectivamente la lista, que luego se utiliza para determinar si la lista original es un palíndromo.