Listas (list
)
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
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
Para añadir un nuevo elemento al final de la lista podemos usar el método append()
:
insert()
:
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
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
Reescribir una posicion particular de la lista:
Contar repeticiones de un elemento: método count()
Concatenar una segunda lista al final de la primera: método extend()
Invertir el orden de los elementos (cambios persistentes): método reverse()
Eliminar todo el contenido de la lista:
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()
: