Listas (list
)
Introducción
La lista es una estructura de datos
para almacenar múltiples valores en secuencia.
Los valores internos se agrupan con los corchetes ( []
)
y se delimitan entre ellos con comas (,
).
Se habitúa dejar un espacio entre cada coma y su elemento siguiente.
Los datos pueden ser de distintos tipos y pueden ser modificados tanto en valor como en tipo.
Ejemplo:
Para acceder a un elemento de la lista en base a su indice éste se indica entre corchetes: El primer índice tiene valor cero. Si el índice iguala o supera la longitud de la lista da error. Dicha longitud de la lista se puede obtener con la funciónlen()
(viene del inglés length):
Indices negativos
Se pueden usar indices negativos hasta la longitud máxima: índice -1
es el último valor, índice -2
es el penúltimo elemento, etc.
Ejemplo: si una lista tiene 10 elementos entonces el rango de índices permitidos va de -10 a 9.
Las listas pueden crearse vacías para ser completadas más tarde:
Las listas pueden ser definidas también usando la función list()
. Esta funcion también permite convertir otros tipos de datos a lista.
Ejemplo aplicacion: Matrices
En matemáticas las matrices son colecciones de valores de dos dimensiones o más y ayudan a representar sistemas de ecuaciones, transferencias (relaciones entrada-salida) de sistemas, etc. Para hacer una matriz de valores se la puede construir en base a una lista que contenga a múltiples listas internas separadas con comas.
Métodos de las listas
Agregar elementos
Para añadir un nuevo elemento al final de la lista podemos usar el método append()
:
Si buscamos añadir un elemento en una posición particular podemos hacerlo indicando un valor indice dentro del método insert()
:
Eliminar elementos
Para eliminar un elemento puede usarse el método remove()
.Éste elimina la primera aparición del método indicado. Si el elemento indicado no existe el método devuelve error.
Para eliminar un elemento por índice y poder retornarlo se usa el método pop()
.Si el elemento indicado no existe el método devuelve error.
elemento = lista.pop( ) # elimina el último elemento
elemento = lista.pop( indice ) # elimina el elemento por indice
Búsqueda
La búsqueda de la posición de un elemento se hacer con el método index()
,el cual presupone que el elemento existe :
Tip: operador in
Para verificar la existencia de un elemento en la lista se puede usar el operador in
el cual devuelve un valor booleano.
Ejemplo de uso: eliminar elemento
Modificar
Reescribir una posicion particular de la lista:
Contar repeticiones
Contar repeticiones de un elemento: método count()
Concatenar
Concatenar una segunda lista al final de la primera: método extend()
Borrado
Eliminar todo el contenido de la lista:
Reordenado
Invertir el orden de los elementos (cambios persistentes): método reverse()
Ordenar los elementos (cambios persistentes): método sort()
lista.sort() # Orden ascendente por defecto
lista.sort( reverse = True) # Orden descendente
lista.sort( key = funcion_ordenamiento) # Criterios personalizables mediante una funcion lambda
Los argumentos de entrada reverse
y key
permiten alterar el orden y el criterio de ordenamiento de la función:
reverse
: booleano que permite invertir el orden. EsFalse
por defecto.key
: función para especificar el criterio de ordenamiento de los elementos. Esta función debe aceptar un solo elemento de la lista como entrada. Por defecto esNone
.
Ejemplos de uso:
Ejemplos: ordenar una lista de strings con sort()
lista = ["aaa", "cccc", "bb"]
lista.sort()
print(lista) # '['aaa', 'bb', 'cccc']'
Copia y referencia de listas
Python permite apuntar a una lista preexistente con una simple asignación:
Si los elementos de la lista original son modificados entonces estos cambios se verán replicados en la lista de salida.
Ejemeplo: cambios sobre lista
# creacion de lista original
original = [ 1, "hola", True]
# la nueva lista muestra el mismo contenido que la oiginal
referencia = original # referencia
print(referencia) # '[1, 'hola', True]'
# al modificar la lista original la lista de salida cambia también
original[1] = "chau"
print(referencia) # '[1, 'chau', True]'
Si se requiere independizar una lista de la otra y así prevenir cambios imprevistos se recurre a la copia.
Tip: copia de listas
Las listas tienen varias opciones para la copia de los valores. Una de ellas es el método copy()
:
Copia superficial y copia profunda
Los métodos de copia descritos previamente son de copia superficial. Esto significa que se copian los valores de las variables internas, pero en caso de haber listas u otros tipos de datos en el interior éstos se pasarán por referencia y por tanto serán susceptibles a cambios.
La alternativa es la copia profunda, la cual copia recursivamente todo el contenido interno de la lista creando así una réplica totalmente independiente del original.
En Python se implementó para tal fin la función deepcopy()
:
Listas por comprensión (comprehension)
Las listas por comprensión se basan en el uso de variables calculadas a partir de una iteración.
Algunos ejemplos de listas creadas a partir de un bucle for
pueden ser: