Python: notación de corte en la lista

En este tutorial, repasaremos ejemplos de la notación de división en Python en listas. Cortaremos una lista, encontraremos colas y cabezas de una lista, invertiremos una lista, reemplazaremos elementos, etc.

Introducción

El término rebanar en programación generalmente se refiere a obtener una subcadena, una subtupla o una sublista de una cadena, tupla o lista, respectivamente.

Python ofrece una variedad de formas sencillas de dividir no solo estos tres sino cualquier iterable. Un iterable es, como su nombre indica, cualquier objeto sobre el que se pueda iterar.

En este artículo, repasaremos todo lo que necesita saber sobre Rebanar listas en Python.

Cortar una lista en Python

Hay un par de formas de dividir una lista, la más común de las cuales es usar el operador : con la siguiente sintaxis:

1
2
a_list[start:end]
a_list[start:end:step]

El parámetro start representa el índice inicial, end es el índice final y step es el número de elementos que se "pasan" por encima.

Si paso no se proporciona explícitamente, el valor predeterminado es 1. Tenga en cuenta que el elemento con el índice comienzo se incluirá en la sublista resultante, pero el elemento con el índice final no lo estará. El primer elemento de una lista tiene el índice de 0.

Ejemplo sin el parámetro paso:

1
2
3
4
# A list of strings:
a_list = ['May', 'the', 'Force', 'be', 'with', 'you.']
sublist = a_list[1:3]
print(sublist)

Esto debería imprimir:

1
['the', 'Force']

Para omitir cualquier otra palabra, establezca paso en 2:

1
2
3
a_list = ['The', 'Force', 'will', 'be', 'with', 'you.', 'Always.']
sublist = a_list[1:8:2]
print(sublist)

Producción:

1
['Force', 'be', 'you.']

Si paso no está en la lista, la sublista comenzará desde el principio. Del mismo modo, si end no está en la lista, la sublista terminará al final de la lista original:

1
2
3
4
5
a_list = ['Do.', 'Or', 'do', 'not.', 'There', 'is', 'no', 'try.']
sublist = a_list[:4]
print(sublist)
sublist = a_list[4:]
print(sublist)

Ese fragmento de código se imprime:

1
2
['Do.', 'Or', 'do', 'not.']
['There', 'is', 'no', 'try.']

Encontrar el principio y el final de la lista con notación de sectores {#encontrar el principio y el final de la lista con notación de sectores}

La notación de corte también se puede utilizar con indexación negativa. La indexación negativa funciona de la misma manera que la indexación regular, excepto por el hecho de que comienza a indexar desde el último elemento que tiene el índice -1.

Esto se puede utilizar para obtener la cabeza y la cola de una lista de una longitud determinada. La cabeza de una lista es una sublista que contiene los primeros n elementos de una lista, y la cola es una sublista que contiene los últimos n elementos.

Avancemos y separemos la cola y la cabeza de una lista:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
# The length of the tail
n = 2
a_list = ['Never', 'tell', 'me', 'the', 'odds!']

# Head of the list:
sublist = a_list[:n]
print(sublist)

# Tail of the list:
sublist = a_list[-n:]
print(sublist)

Esto da como resultado:

1
2
['Never', 'tell']
['the', 'odds!']

Uso de la notación de sector para invertir una lista

Incluso el parámetro paso puede ser negativo. Si le ponemos un valor negativo, la lista resultante se invertirá, con el valor paso. En lugar de dar un paso adelante, estamos retrocediendo, desde el final de la lista hasta el principio e incluyendo estos elementos:

1
2
3
a_list = ['Power!', 'Unlimited', 'power!']
sublist = a_list[::-1]
print(sublist)

Esto resulta en:

1
['power!', 'Unlimited', 'Power!']

Reemplazo de elementos de una sublista con notación de sector {#reemplazando elementos de una sublista con notación de sector}

La notación de corte se puede utilizar para asignar nuevos valores a los elementos de una determinada sublista. Por ejemplo, intentemos reemplazar la cola y la cabeza de una lista:

1
2
3
4
5
6
7
8
a_list = ['I', 'am', 'no', 'Jedi.']
print(a_list)
# Replacing the head of a list
a_list[:1] = ['You', 'are']
print(a_list)
# Replacing the tail of a list
a_list[-1:] = ['Sith']
print(a_list)

La salida esperada es:

1
2
3
['I', 'am', 'no', 'Jedi.']
['You', 'are', 'no', 'Jedi.']
['You', 'are', 'no', 'Sith']

Reemplazo de cada n-ésimo elemento de una lista con notación de sector {#reemplazando cada elemento de una lista con notación de sector}

Una manera fácil de reemplazar cada n-ésimo elemento de una lista es establecer el parámetro paso en n en la notación de corte:

1
2
3
4
5
6
7
 a_list = ['I’m', 'just', 'a', 'simple', 'man', 'trying', 'to', 'make', 'my', 'way', 'in', 'the', 'universe.']
    
print(a_list)

# Replacing every other word starting with the word with the index 1
a_list[1::2] = ['only', 'common', 'attempting','do', 'best','the']
print(a_list)

Esto resulta en:

1
2
3
['I’m', 'just', 'a', 'simple', 'man', 'trying', 'to', 'make', 'my', 'way', 'in', 'the', 'universe.']
['just', 'simple', 'trying', 'make', 'way', 'the']
['I’m', 'only', 'a', 'common', 'man', 'attempting', 'to', 'do', 'my', 'best', 'in', 'the', 'universe.']

Conclusión

Cortar cualquier secuencia en Python es fácil, simple e intuitivo. La indexación negativa ofrece una manera fácil de adquirir los primeros o los últimos elementos de una secuencia, o invertir su orden.

En este artículo, hemos cubierto cómo aplicar la notación de corte en listas en Python.

Licensed under CC BY-NC-SA 4.0