← Volver

Cómo obtener un subconjunto de una lista, tupla o cadena

Las listas, tuplas y cadenas, al ser colecciones ordenadas de objetos –en el caso de las cadenas, de caracteres– soportan una operación llamada slicing. Se indica entre corchetes e intercalados por dos puntos las posiciones de inicio y fin del subconjunto que se quiere obtener.

>>> lenguajes = ["Python", "C", "C++", "Java", "Elixir", "Rust"]
>>> lenguajes[2:4]
['C++', 'Java']

Cuando se omite alguno de los índices, Python considera el inicio o bien el final de la colección según corresponda.

>>> lenguajes[1:]  # Todos los elementos a excepción del primero.
['C', 'C++', 'Java', 'Elixir', 'Rust']

Este código es, en rigor, similar a lenguajes[1:len(lenguajes)].

Los índices pueden ser también negativos, para indicar posiciones a partir del final de la lista, es decir, de derecha a izquierda.

>>> lenguajes[:-1]  # Todos los elementos a excepción del último.
['Python', 'C', 'C++', 'Java', 'Elixir']

Un tercer índice indica el intervalo en el que se obtienen los elementos. Por defecto es 1, de modo que todos se incluyen en el resultado.

>>> lenguajes[::2]  # Obtener elementos en intervalos de 2.
['Python', 'C++', 'Elixir']
>>> list(range(1, 11))[::2]
[1, 3, 5, 7, 9]

Dado que este tercer índice también puede ser un número negativo, el siguiente código retorna los elementos de derecha a izquierda.

>>> lenguajes[::-1]
['Rust', 'Elixir', 'Java', 'C++', 'C', 'Python']

El procedimiento es similar para cadenas. Cada uno de los caracteres se considera un elemento.

>>> s = "Hola mundo!"
>>> s[5:10]
'mundo'



¿Alguna duda sobre este código? ¡Preguntanos en el foro!