Python: notación de corte en la lista

    Introducción

    El término segmentar en programación generalmente se refiere a obtener una subcadena, subtupla o 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 las listas de corte en Python.

    Cortar una lista en Python

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

    a_list[start:end]
    a_list[start:end:step]
    

    los start parámetro representa el índice inicial, end es el índice final, y step es el número de elementos sobre los que se “pasa”.

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

    Ejemplo sin el step parámetro:

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

    Esto debería imprimir:

    ['the', 'Force']
    

    Para omitir cualquier otra palabra, configure step a 2:

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

    Salida:

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

    Si step no aparece en la lista, la sublista comenzará desde el principio. Asimismo, si end no está en la lista, la sublista terminará al final de la lista original:

    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:

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

    Encontrar el principio y el final de una lista con notación de sector

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

    Esto se puede utilizar para obtener el principio y el final de una lista de una longitud determinada. El encabezado de una lista es una sublista que contiene la primera n elementos de una lista, y la cola es una sublista que contiene el último n elementos.

    Sigamos adelante y separemos la cola y la cabeza de una lista:

    # 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 produce:

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

    Uso de notación de sector para invertir una lista

    Incluso el step El parámetro puede ser negativo. Si lo establecemos en un valor negativo, la lista resultante se invertirá, con el step valor. En lugar de dar un paso adelante, estamos dando un paso atrás, desde el final de la lista hasta el principio e incluimos estos elementos:

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

    Esto resulta en:

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

    Reemplazo de elementos de una sublista con notación de sector

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

    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)
    

    El resultado esperado es:

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

    Reemplazo de cada enésimo elemento de una lista con notación de sector

    Una forma sencilla de reemplazar cada n-ésimo elemento de una lista es establecer el step parámetro a n en la notación de corte:

     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:

    ['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 últimos elementos de una secuencia, o invertir su orden.

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

     

    Etiquetas:

    Deja una respuesta

    Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *