El slicing extrae una porción de una secuencia (list, tuple, string) con la sintaxis sequence[start:stop:step]. Es una función potente y concisa que se usa constantemente en Python.
Slicing básico
nums = [0, 1, 2, 3, 4, 5]
nums[1:4] # [1, 2, 3] — start at index 1, up to (NOT including) 4
nums[:3] # [0, 1, 2] — from the start (start defaults to 0)
nums[3:] # [3, 4, 5] — to the end (stop defaults to len)
nums[:] # [0, 1, 2, 3, 4, 5] — a full (shallow) COPY
La regla clave: start es inclusivo y stop es exclusivo (nums[1:4] da los índices 1, 2, 3, no el 4).
Los índices negativos cuentan desde el final
nums[-1] # 5 — last element
nums[-2] # 4 — second to last
nums[-3:] # [3, 4, 5] — last three elements
nums[:-1] # [0, 1, 2, 3, 4] — everything except the last
El parámetro step
nums[::2] # [0, 2, 4] — every 2nd element
nums[1::2] # [1, 3, 5] — every 2nd, starting at index 1
nums[::-1] # [5, 4, 3, 2, 1, 0] — REVERSE the sequence (a famous idiom)
Invertir una secuencia con nums[::-1] es uno de los modismos más reconocibles de Python.
Slicing de strings
s = "Hello"
s[1:4] # "ell"
s[::-1] # "olleH" — reverse a string
s[0] # "H"
Asignación de slices (para listas mutables)
nums = [0, 1, 2, 3, 4]
nums[1:3] = [10, 20, 30] # replace a slice (can change length)
# nums → [0, 10, 20, 30, 3, 4]
El slicing es seguro (sin IndexError)
nums[10:20] # [] — out-of-range slices return empty, don't crash (unlike nums[10])
A diferencia del acceso por índice único (que lanza IndexError), el slicing devuelve elegantemente lo que esté disponible.
Por qué es importante
El slicing es una función ubicua y claramente Pythonic para extraer, copiar e invertir secuencias de forma limpia.
Comprender la sintaxis start:stop:step (sobre todo inicio-inclusivo/fin-exclusivo), los índices negativos (que cuentan desde el final), el modismo de inversión ([::-1]) y que los slices son seguros (no fallan ante rangos fuera de límite) te permite manipular listas y strings de forma concisa y correcta.
Sustituye bucles verbosos para operaciones comunes y aparece por todo el código Python idiomático.
