Cómo dividir una lista en Python (índices, pasos e inversión)

Aprenda a dividir listas en Python utilizando la potente sintaxis de corchetes. Domine los argumentos de inicio, parada y paso, la indexación negativa y las listas inversas.

Pruebe esta solución en el Editor

Descripción general

El corte es una de las funciones más intuitivas y poderosas de Python, que le permite extraer subconjuntos de una lista, tupla o cadena con una sintaxis limpia y concisa. En lugar de escribir bucles detallados para copiar elementos específicos de una lista, la notación de corte de Python le permite especificar un rango de índices entre corchetes.

La sintaxis completa para la división de listas es `my_list[start:stop:step]`. El índice "inicio" es inclusivo, el índice "detención" es exclusivo y el "paso" define el incremento entre elementos (el valor predeterminado es 1). Si omite `inicio`, Python se ubica de forma predeterminada al principio de la lista. Si omite "detener", Python se ubica de forma predeterminada al final de la lista. Esto hace que la extracción de partes de colecciones sea muy expresiva.

El rebanado también es extremadamente versátil porque admite índices negativos. Un índice de inicio o parada negativo cuenta hacia atrás desde el final de la lista (donde "-1" representa el último elemento). Al establecer un valor de paso negativo, como `my_list[::-1]`, puede recuperar rápidamente una copia invertida de la lista. Comprender los rangos de sectores es esencial para una extracción de datos limpia.

Código y salida de ejecución

Este script demuestra la división de listas utilizando diferentes inicios, paradas, rangos de pasos, indexación negativa e inversión de listas.

list_slicing.py
Pruébelo en el editor
numbers = [0, 10, 20, 30, 40, 50, 60, 70, 80]

# 1. Basic slicing: elements from index 2 up to (but excluding) 6
subset = numbers[2:6]
print("Subset [2:6]:", subset)

# 2. Omitting indices: start to index 4, and index 5 to end
first_five = numbers[:5]
last_four = numbers[5:]
print("First five [:5]:", first_five)
print("Last four [5:]:", last_four)

# 3. Using a step parameter: get every second element
every_second = numbers[::2]
print("Every second [::2]:", every_second)

# 4. Negative indexing: get the last three elements
last_three = numbers[-3:]
print("Last three [-3:]:", last_three)

# 5. Reverse the list using step=-1
reversed_numbers = numbers[::-1]
print("Reversed list [::-1]:", reversed_numbers)
Salida terminal
Subset [2:6]: [20, 30, 40, 50]
First five [:5]: [0, 10, 20, 30, 40]
Last four [5:]: [50, 60, 70, 80]
Every second [::2]: [0, 20, 40, 60, 80]
Last three [-3:]: [60, 70, 80]
Reversed list [::-1]: [80, 70, 60, 50, 40, 30, 20, 10, 0]

Implementación paso a paso

  • Utilice list[start:stop] para extraer elementos desde el inicio del índice hasta el final, pero sin incluirlo.
  • Omita los índices de inicio o parada (por ejemplo, lista[:4] o lista[4:]) para cortar desde el límite de la lista.
  • Pase un tercer argumento dentro de la lista de corchetes[::paso] para omitir elementos a intervalos regulares.
  • Utilice índices negativos para contar elementos hacia atrás desde el final de la colección.

Preguntas frecuentes

¿El corte modifica la lista original?

No, la división de listas devuelve una copia superficial del rango solicitado, dejando la lista original sin cambios.

¿Qué sucede si los índices de corte están fuera de los límites?

A diferencia del acceso a un único índice que genera un IndexError, el corte es indulgente y simplemente limita el rango en los límites de la lista, devolviendo una lista vacía si ningún elemento se encuentra en el rango.

Temas relacionados

Recursos recomendados de Python

Amplíe sus conocimientos con tutoriales interactivos relacionados, hojas de trucos y comparaciones de códigos.