Tipo de datos secuencia: listas
Si queremos guardar un conjunto de valores, en pseudocódigo utilizamos loas arreglos. Un array (o arreglo) es una estructura de datos con elementos homogéneos, del mismo tipo, numérico o alfanumérico, reconocidos por un nombre en común.
Hay muchos lenguajes que implementan los arrays, pero esta estructura tiene dos limitaciones: son homogéneas, es decir sólo se pueden guardar datos del mismo tipo, y son estáticas, a la hora de declarar se indican las posiciones y la longitud del array no se puede cambiar durante la ejecución del programa.
En Python no existen los arrays, tenemos varios tipos de datos que nos permiten guardar conjuntos de informaciones. En esta unidad vamos a estudiar las Listas. Las listas (list
) me permiten guardar un conjunto de datos que se pueden repetir y que pueden ser de distintos tipos. Además esta estructura es dinámica, en cualquier momento de la ejecución del programa puedo añadir o eliminar elementos de la lista.
Construcción de una lista
Para crear una lista puedo usamos los caracteres [
y ]
:
>>> lista1 = []
>>> lista2 = ["a",1,True]
Operaciones básicas con listas
Las listas son secuencias, a las que podemos realizar las siguientes operaciones. Vamos a ver distintos ejemplos partiendo de la siguiente lista:
lista = [1,2,3,4,5,6]
-
Las listas se pueden recorrer:
>>> for num in lista: ... print(num,end="") 123456
Con la instrucción
for
podemos recorrer más de una listas, utilizando la funciónzip
. Veamos un ejemplo:>>> lista2 = ["a","b","c","d","e"] >>> for num,letra in zip(lista,lista2): ... print(num,letra) ... 1 a 2 b 3 c 4 d 5 e
-
Operadores de pertenencia: Se puede comprobar si un elemento pertenece o no a una lista 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 una lista:>>> lista * 2 [1, 2, 3, 4, 5, 6, 1, 2, 3, 4, 5, 6]
-
Indexación: Puedo obtener el dato de una secuencia indicando la posición en la secuencia.
>>> lista[3] 4
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[12] 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 (rebanada): Puedo obtener una subsecuencia de los datos de una lista. Funciona de forma similar como en las cadenas, veamos algunos ejemplos:
>>> lista[2:4] [3, 4] >>> lista[1:4:2] [2, 4] >>> lista[:5] [1, 2, 3, 4, 5] >>> lista[5:] [6, 1, 2, 3, 4, 5, 6] >>> lista[::-1] [6, 5, 4, 3, 2, 1, 6, 5, 4, 3, 2, 1]
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