Estructuras de Python
Estructuras de Python
Listas
Crear listas
Una lista está compuesta por cero o más elementos. En Python debemos escribir estos
elementos separados por comas y dentro de corchetes.
Ejemplos de listas:
list = []
programas = ['Python' , 'Ruby' , 'Javascript' ]
serief = [0, 1, 1, 2, 3, 5, 8, 13]
datos = ['Tenerife', {'cielo': 'limpio', 'temp': 24}, 3718, (28.2933947, -16.5226597)]
print(list)
print(programas)
print(serief)
print(datos)
Nota: Una lista puede contener tipos de datos heterogéneos, lo que la hace una
Estructura
Conversión
Para convertir otros tipos de datos en una lista podemos usar la función list():
Existe una manera particular de usar list() y es no pasarle ningún argumento. En este caso
estaremos queriendo convertir el «vacío» en una lista, con lo que obtendremos una lista
vacía:
# lista vacia
lista = list()
print(lista)
Obtener un elemento Igual que en el caso de las cadenas de texto, podemos obtener un
elemento de una lista a través del índice (lugar) que ocupa.
Ejemplo:
El índice que usemos para acceder a los elementos de una lista tiene que estar
comprendido entre los límites de esta. Si usamos un índice antes del comienzo o después
del final obtendremos un error (excepción):
[]
['Agua', 'Huevos']
['Aceite', 'Sal', 'Limón']
>
Ninguna de las operaciones anteriores modifica la lista original, simplemente devuelven
una lista nueva.
Python nos ofrece, al menos, tres mecanismos para invertir los elementos de una lista:
Conservando la lista original: Mediante troceado de listas con step negativo:
Modificando la lista original: Utilizando la función reverse() (nótese que es sin «d» al final):
Una de las operaciones más utilizadas en listas es añadir elementos al final de estas. Para
ello Python nos ofrece la función append(). Se trata de un método destructivo que
modifica la lista original:
numeros = []
for i in range(20):
if i % 2 == 0:
numeros.append(i)
print(numeros)
Al igual que ocurría con el troceado de listas, en este tipo de inserciones no obtendremos
un error si especificamos índices fuera de los límites de la lista. Estos se ajustarán al
principio o al final en función del valor que indiquemos:
Aunque es posible utilizar insert() para añadir elementos al final de una lista, siempre se
recomienda usar append() por su mayor legibilidad:
values = [1, 2, 3]
values.append(4)
print(values)
Repetir elementos Al igual que con las cadenas de texto, el operador * nos permite repetir
los elementos de una lista:
Hay que tener en cuenta que extend() funciona adecuadamente si pasamos una lista
como argumento. En otro caso, quizás los resultados no sean los esperados. Veamos un
ejemplo:
El motivo es que extend() «recorre» (o itera) sobre cada uno de los elementos del objeto
en cuestión. En el caso anterior, al ser una cadena de texto, está formada por caracteres.
De ahí el resultado que obtenemos. Se podría pensar en el uso de append() para combinar
listas. La realidad es que no funciona exactamente como esperamos; la segunda lista se
añadiría como una sublista de la principal:
Explicación:
En la lista1 la sublista se encuentra en la posición 3 y en esa posición se encuentra una
sublista y en la posición 0 se encuentra almacenado la frase Naranja.
Del mismo modo que se accede a un elemento utilizando su índice, también podemos
modificarlo:
lista1 = [ 'Agua' , 'Huevos' , 'Aceite' ]
print(lista1)
print(lista1[0])
lista1[0]= 'Cebolla' #se cambia el valor almacenado en la posición 0
print(lista1)
Resultado
['Agua', 'Huevos', 'Aceite']
Agua
['Cebolla', 'Huevos', 'Aceite']
Resultado
['Agua', 'Huevos', 'Aceite', 'Sal', 'Limón']
['Huevos', 'Aceite', 'Sal']
['Agua', 'Atún', 'Pasta', 'Limón']
La lista que se asigna no necesariamente debe tener la misma longitud que el rango que
se sustituye.
Borrar elementos:
Python nos ofrece, al menos, cuatro formas para borrar elementos en una lista: Por su
índice: Mediante la función del():
Resultado
['Agua', 'Huevos', 'Aceite', 'Sal', 'Limón']
['Agua', 'Huevos', 'Aceite', 'Limón']
Por su valor:
Mediante la función remove():
lista = ['Agua' , 'Huevos' , 'Aceite' , 'Sal' , 'Limón']
print(lista)
lista.remove('Sal') #el elemento sal lo elimina
print(lista)
Resultado
['Agua', 'Huevos', 'Aceite', 'Sal', 'Limón']
['Agua', 'Huevos', 'Aceite', 'Limón']
Si existen valores duplicados, la función remove() sólo borrará el primero que encuentre.
Resultado
['Agua', 'Huevos', 'Aceite', 'Sal', 'Limón']
frase: Limón
['Agua', 'Huevos', 'Aceite', 'Sal']
frase 2: Aceite
['Agua', 'Huevos', 'Sal']
Si usamos la función pop() Sin pasarle ningún argumento, por defecto usará el índice -1, es
decir, el último elemento de la lista. Pero también podemos indicarle el índice del
elemento a extraer.
Por su rango: Mediante troceado de listas:
Resultado:
['Agua', 'Huevos', 'Aceite', 'Sal', 'Limón']
lista vacia: []
Buscar un elemento
Número de ocurrencias
Para contar cuántas veces aparece un determinado valor dentro de una lista podemos
usar la función count():
Convertir lista a cadena de texto Dada una lista, podemos convertirla a una cadena de
texto, uniendo todos sus elementos mediante algún separador. Para ello hacemos uso de
la función join() con la siguiente estructura:
‘separador’.join(lista)
1) , (coma)
2) =
3) Espacio en blanco
Resultado
Lista original: [1, -10, -20, 25, 12]
Lista ordenada: [-20, -10, 1, 12, 25]
Ambos métodos admiten un parámetro «booleano» reverse para indicar si queremos que
la ordenación se haga en sentido inverso:
Resultado
Lista ordenada [25, 12, 1, -10, -20]
lista Original: [1, -10, -20, 25, 12]
Resultado
Lista ordenada [25, 12, 1, -10, -20]
lista Original: [1, -10, -20, 25, 12]
lista ordenada: [25, 12, 1, -10, -20]
Resultado
-10
-20
25
12
Resultado
1 Huevos
2 Aceite
3 Sal
4 Limón
Iterar sobre múltiples listas
Python ofrece la posibilidad de iterar sobre múltiples listas en paralelo utilizando la
función zip():
Resultado
Nota: En el caso de que las listas no tengan la misma longitud, la función zip() realiza la
combinación hasta que se agota la lista más corta.
Dado que zip() produce un iterador, si queremos obtener una lista explícita con la
combinación en paralelo de las listas, debemos construir dicha lista de la siguiente
manera:
Resultado
Muestra las dos listas: [('Agua', 'mineral natural'), ('Aceite', 'de oliva virgen'),
('Arroz', 'basmati')]
Lista 3: [('Agua', 'mineral natural'), ('Aceite', 'de oliva virgen'), ('Arroz', 'basmati')]
Lista 3 [0][0]: Agua