Estructuras Datos 2/2
En esta segunda parte del tutorial vamos a seguir explorando las diversas opciones y herramientas que tenemos para trabajar con estas estructuras de datos, de forma que podamos incorporarlas en nuestros programas de manera más rápida y eficiente.
Asignación de partes
Otra poderosa herramienta que tenemos para trabajar es la asignación de porciones o slices que no es otra cosa que asignar elementos en trozos a una lista.
Veamos el siguiente ejemplo, supongamos que construimos nuestra lista inicial:
>>> name = list('Perl') >>> name ['P', 'e', 'r', 'l']
Y queremos hacer el cambio de la siguiente forma:
>>> name[2:] = list('ar')
Ahora al imprimir nuestra lista obtenemos lo siguiente:
>>> name ['P', 'e', 'a', 'r']
Como ven pudimos cambiar dos posiciones de una sola vez en la asignación por porciones, bastante impresionante, recordemos ahora lo que habíamos mencionado con anterioridad que no podíamos asignar a posiciones inexistentes, ahora con este método podemos hacerlo sin ningún inconveniente, fijémonos en el siguiente código:
Creamos nuestra lista:
>>> name = list('Perl')
Y ahora asignamo el valor:
>>> name[1:] = list('ython')
Al imprimir vemos como cambiamos y modificamos el tamaño de nuestra lista inicial:
>>> name ['P', 'y', 't', 'h', 'o', 'n']
Bastante impresionante y sencillo este tipo de asignaciones, que tal si no queremos sustituir un valor dentro de nuestra lista si no que queremos agregar uno nuevo, el siguiente código nos muestra cómo:
>>> numbers = [1, 5] >>> numbers[1:1] = [2, 3, 4] >>> numbers [1, 2, 3, 4, 5]
Métodos del objeto List
Ahora veremos algunos de los métodos disponibles cuando creamos una lista, en este caso cuando creamos una lista podemos acceder a los métodos de su clase para realizar más operaciones de forma muy sencilla, veamos un primer ejemplo para que nos pongamos en contexto.
Iniciamos asignando nuestra lista:
>>> lst = [1, 2, 3]
Digamos que queremos asignar un nuevo elemento, es decir hacer crecer el tamaño de la lista en 1 elemento, podemos hacer lo siguiente:
>>> lst.append(4)
Imprimimos el contenido y nos fijamos como cambió la lista.
>>> lst [1, 2, 3, 4]
En esta parte es importante destacar que la palabra list es una palabra reservada y si la utilizáramos para nombrar nuestra lista no podríamos ejecutar ninguno de estos métodos que estamos viendo.
Contar
Qué tal si quisiéramos encontrar coincidencias de un elemento dentro de la lista y además quisiéramos saber cuántas veces se repite, esto que en otros lenguajes se resolvía haciendo un algoritmo bastante tedioso, en Python lo hacemos simple y legible de la siguiente forma:
>>> ['to', 'be', 'or', 'not', 'to', 'be'].count('to') 2
Se ve bastante sencillo en la aplicación y que poderosa resulta esta funcionalidad que inclusive puede ser mucho más compleja como veremos:
>>> x = [[1, 2], 1, 1, [2, 1, [1, 2]]] >>> x.count(1) 2 >>> x.count([1, 2]) 1
El método Extend
Este método nos permite extender una lista con otra, veamos un ejemplo ya que el código es bastante simple de seguir.
Primero creamos dos listas:
>>> a = [1, 2, 3] >>> b = [4, 5, 6]
Luego simplemente decimos que queremos extender la lista a con la lista b
>>> a.extend(<img src='http://www.solvetic.com/public/style_emoticons/default/cool.png' class='bbc_emoticon' alt='B)' />
Ahora imprimimos nuestra lista resultante:
>>> a [1, 2, 3, 4, 5, 6]
Aunque pueda parecer simple concatenación no lo es, veamos una concatenación para visualizar las diferencias:
>>> a = [1, 2, 3] >>> b = [4, 5, 6] >>> a + b [1, 2, 3, 4, 5, 6] >>> a [1, 2, 3]
Como vemos la lista a conserva sus elementos como originalmente fueron definidos.
Bien, esto es todo en esta segunda parte de nuestro tutorial de estructura de datos, se recomienda practicar estas herramientas y encontrarle la lógica a cada ejemplo para poder dominar este grandioso y robusto lenguaje.