Tipo de datos secuencia: Listas¶
Las listas (list
) me permiten guardar un conjunto de datos que se pueden repetir y que pueden ser de distintos tipos.
Construcción de una lista¶
Para crear una lista puedo usar varias formas:
Con los caracteres
[
y]
:>>> lista1 = [] >>> lista2 = ["a",1,True]
Utilizando el constructor
list
, que toma como parámetro un dato de algún tipo secuencia.>>> lista3 = list() >>> lista4 = list("hola") >>> lista4 ['h', 'o', 'l', 'a']
Operaciones básicas con listas¶
Vamos a ver distintos ejemplos partiendo de una lista, que es una secuencia mutable.
lista = [1,2,3,4,5,6]
Las secuencias se pueden recorrer.
>>> for num in lista: ... print(num,end="") 123456
Operadores de pertenencia: Se puede comprobar si un elemento pertenece o no a una secuencia con los operadores
in
ynot in
.>>> 2 in lista True >>> 8 not in lista True
Concatenación:
+
: El operador+
me permite unir datos de tipos listas.>>> lista + [7,8,9] [1, 2, 3, 4, 5, 6, 7, 8, 9]
Repetición:
*
: El operador*
me permite repetir un dato de un tipo lista.>>> lista * 2 [1, 2, 3, 4, 5, 6, 1, 2, 3, 4, 5, 6]
Indexación: Cada elemento tiene un índice, empezamos a contar por el elemento en el índice 0. Si intento acceder a un índice que corresponda a un elemento que no existe obtenemos una excepción
IndexError
.>>> lista1[6] Traceback (most recent call last): File "<stdin>", line 1, in <module IndexError: list index out of range
Se pueden utilizar índices negativos:
>>> lista[-1] 6
Slice: Veamos como se puede utilizar
lista[start:end]
# Elementos desde la posición start hasta end-1lista[start:]
# Elementos desde la posición start hasta el finallista[:end]
# Elementos desde el principio hata la posición end-1lista[:]
# Todos Los elementoslista[start:end:step]
# Igual que el anterior pero dando step saltos.
Se pueden utilizar también índices negativos, por ejemplo:
lista[::-1]
>>> lista[2:4] [3, 4] >>> lista[1:4:2] [2, 4]
Funciones predefinidas que trabajan con listas¶
>>> lista1 = [20,40,10,40,50]
>>> len(lista1)
5
>>> max(lista1)
50
>>> min(lista1)
10
>>> sum(lista1)
150
>>> sorted(lista1)
[10, 20, 30, 40, 50]
>>> sorted(lista1,reverse=True)
[50, 40, 30, 20, 10]
Listas multidimensionales¶
A la hora de definir las listas hemos indicado que podemos guardar en ellas datos de cualquier tipo, y evidentemente podemos guardar listas dentro de listas.
>>> tabla = [[1,2,3],[4,5,6],[7,8,9]]
>>> tabla[1][1]
5
>>> for fila in tabla:
... for elem in fila:
... print(elem,end="")
... print()
123
456
789
Recorriendo varias secuencias. Función zip()¶
Con la instrucción for
podemos ejecutar más de una secuencia, utilizando la función zip
. Esta función crea una secuencia donde cada elemento es una tupla de los elementos de cada secuencia que toma cómo parámetro.
Ejemplo
>>> list(zip(range(1,4),["ana","juan","pepe"]))
[(1, 'ana'), (2, 'juan'), (3, 'pepe')]
Para recorrerla:
>>> for x,y in zip(range(1,4),["ana","juan","pepe"]):
... print(x,y)
1 ana
2 juan
3 pepe