Slicing en Python: guía completa con ejemplos

Actualizado el: 11/07/2026
Tempo de leitura: 3 minutos
Fatiamento de listas (slicing) em Python

El slicing permite extraer, copiar, invertir y seleccionar partes de una secuencia con una sintaxis compacta. Funciona con listas, strings, tuplas, rangos y muchos objetos de bibliotecas externas. Cuando comprendes las tres posiciones —inicio, fin y paso— puedes sustituir numerosos bucles manuales por expresiones claras.

En esta guía de slicing en Python aprenderás los fundamentos, índices negativos, copias, asignación de segmentos, eliminación, inversión y errores frecuentes. Para repasar la estructura principal utilizada en los ejemplos, consulta la guía de listas en Python.

Sintaxis del slicing

Un segmento utiliza secuencia[inicio:fin:paso]. El índice inicial se incluye y el final se excluye. Cualquier componente puede omitirse.

letras = ["a", "b", "c", "d", "e", "f"]

print(letras[1:4])  # ['b', 'c', 'd']
print(letras[:3])   # ['a', 'b', 'c']
print(letras[3:])   # ['d', 'e', 'f']
print(letras[:])    # copia superficial

La exclusión del límite final coincide con el comportamiento explicado en la guía de range() en Python.

Slicing de strings y tuplas

Los strings y las tuplas son inmutables. El slicing devuelve un objeto nuevo sin modificar el original.

lenguaje = "Python"
print(lenguaje[0:3])  # Pyt
print(lenguaje[-3:])  # hon

punto = (10, 20, 30, 40)
print(punto[1:3])     # (20, 30)

La guía de strings en Python muestra más operaciones de búsqueda, limpieza y formato.

Índices negativos

Los índices negativos cuentan desde el final. -1 representa el último elemento.

valores = [5, 10, 15, 20, 25]

print(valores[-1])   # 25
print(valores[-3:])  # [15, 20, 25]
print(valores[:-1])  # todo menos el último

Los límites de un slice pueden superar el tamaño de la secuencia. Un índice individual fuera del rango genera IndexError, pero un slice devuelve los elementos disponibles.

Utilizar el paso

numeros = list(range(10))

print(numeros[::2])   # posiciones pares
print(numeros[1::2])  # posiciones impares
print(numeros[::-1])  # copia invertida

Un paso de cero no es válido y genera ValueError. Un paso negativo recorre la secuencia hacia atrás.

Invertir una secuencia

palabra = "reconocer"
es_palindromo = palabra == palabra[::-1]
print(es_palindromo)

[::-1] crea una copia invertida. Cuando solo necesitas recorrer hacia atrás, reversed() puede evitar una copia completa.

Copiar una lista

Un slice completo crea una copia superficial. La lista exterior es nueva, pero los objetos mutables internos siguen compartidos.

original = [[1, 2], [3, 4]]
copia = original[:]

copia.append([5, 6])
print(original)

copia[0].append(99)
print(original)

Para copiar también los objetos anidados, utiliza copy.deepcopy().

Modificar listas con asignación de slices

colores = ["rojo", "verde", "azul", "negro"]

colores[1:3] = ["amarillo", "blanco"]
print(colores)

colores[2:2] = ["morado"]
print(colores)

colores[-1:] = []
print(colores)

La asignación modifica la lista original. Cuando el paso es uno, la cantidad de elementos nuevos no tiene que coincidir con la cantidad seleccionada.

Asignación con paso

valores = [0, 1, 2, 3, 4, 5]
valores[::2] = [10, 20, 30]
print(valores)

En un slice extendido, la cantidad de elementos de reemplazo debe ser exactamente igual a la cantidad de posiciones seleccionadas.

Eliminar con del

cola = ["a", "b", "c", "d", "e"]
del cola[1:4]
print(cola)  # ['a', 'e']

Nombrar segmentos complejos

El objeto slice() representa los mismos valores de inicio, fin y paso. Nombrarlo mejora la lectura cuando una selección se repite.

registro = "2026-07-11|PAGADO|00042"

parte_fecha = slice(0, 10)
parte_estado = slice(11, 17)
parte_id = slice(18, None)

print(registro[parte_fecha])
print(registro[parte_estado])
print(registro[parte_id])

Dividir una lista en lotes

def crear_lotes(elementos, tamano):
    if tamano <= 0:
        raise ValueError("El tamaño debe ser positivo")

    for inicio in range(0, len(elementos), tamano):
        yield elementos[inicio:inicio + tamano]

for lote in crear_lotes(list(range(10)), 3):
    print(lote)

Este patrón combina slicing con generadores y es útil para solicitudes a APIs, inserciones en bases de datos y procesamiento paginado.

Slicing y list comprehensions

El slicing selecciona posiciones; una comprensión transforma o filtra valores. La guía de list comprehensions en Python explica cuándo conviene utilizar cada herramienta.

numeros = list(range(20))
seleccion = numeros[5:15]
cuadrados_pares = [n ** 2 for n in seleccion if n % 2 == 0]

Errores frecuentes

  • Olvidar que el índice final queda excluido.
  • Usar un paso negativo con límites pensados para avanzar.
  • Creer que lista[:] realiza una copia profunda.
  • Crear copias grandes cuando solo se necesita iterar.
  • Confundir un índice individual con un slice de un elemento.
  • Modificar una lista compartida mediante asignación de slices.

Conclusión

El slicing en Python sirve para mucho más que extraer una parte de una lista. Permite utilizar posiciones negativas, saltos, inversión, copias superficiales, reemplazo, eliminación y procesamiento por lotes. Recuerda la regla de inicio incluido y fin excluido, y evita copias innecesarias cuando trabajes con grandes volúmenes de datos.

Documentación oficial

La documentación de Python explica las operaciones comunes de las secuencias y la sintaxis formal de los slicings, incluidos los valores de inicio, fin y paso.

Compartilhe:

Facebook
WhatsApp
Twitter
LinkedIn

Contenido del artículo

    Artículos relacionados

    Uso do operador in em Python para verificação em coleções
    Fundamentos
    Foto de perfil de Leandro Hirt da Academify

    Operador in en Python: pruebas de pertenencia

    Aprende a usar el operador in en Python con strings, listas, sets, diccionarios, rangos, generadores, not in y clases personalizadas.

    Ler mais

    Tempo de leitura: 3 minutos
    11/07/2026
    Introdução ao Python para iniciantes
    Fundamentos
    Foto de perfil de Leandro Hirt da Academify

    List comprehensions en Python: guía completa

    Aprende list comprehensions en Python con transformaciones, filtros, condiciones, bucles anidados, diccionarios, sets y generadores.

    Ler mais

    Tempo de leitura: 3 minutos
    11/07/2026
    Leitura e escrita de arquivos CSV em Python
    Fundamentos
    Foto de perfil de Leandro Hirt da Academify

    Archivos CSV en Python: leer, escribir y procesar

    Aprende a leer, escribir, filtrar y validar archivos CSV en Python con reader, writer, DictReader, DictWriter, UTF-8 y streaming.

    Ler mais

    Tempo de leitura: 3 minutos
    11/07/2026
    Leitura e escrita de arquivos TXT usando Python
    Fundamentos
    Foto de perfil de Leandro Hirt da Academify

    Cómo leer y escribir archivos de texto en Python

    Aprende a leer, escribir, añadir y procesar archivos de texto en Python con UTF-8, with, pathlib y manejo seguro de

    Ler mais

    Tempo de leitura: 4 minutos
    11/07/2026
    Pessoa usando tablet com caneta digital para planejar tarefas em checklist, representando organização, planejamento e produtividade digital.
    Fundamentos
    Foto de perfil de Leandro Hirt da Academify

    sort() vs sorted() en Python: diferencias y ejemplos

    Aprende las diferencias entre sort() y sorted() en Python, con claves personalizadas, orden descendente, varios criterios y errores comunes.

    Ler mais

    Tempo de leitura: 3 minutos
    11/07/2026
    Uso da função enumerate em loops Python
    Fundamentos
    Foto de perfil de Leandro Hirt da Academify

    enumerate() en Python: bucles con índices

    Aprende enumerate() en Python para recorrer valores con índices, elegir el inicio, combinarlo con zip, procesar archivos y evitar contadores

    Ler mais

    Tempo de leitura: 3 minutos
    11/07/2026