Hoy veremos otro tipo de objetos en python llamados listas y además empezaremos a tomar decisiones con expresiones condicionales.
En la reunión pasada vimos que en python podemos tener diversos tipos de objetos numéricos, booleanos y de caracteres. Incluso aprendimos cómo guardar estos valores en variables, pero que pasa si queremos operar no sólo con un valor sino con una colección de valores. Para este caso hay otro tipo de objetos y el primero que veremos se llama lista.
En python una lista es una secuencia de elementos mutables que llevan asignados un índice. Para crear una lista en python los que se hace es empezar con corchetes que van a ser llenados con valores separados por una coma, éstos valores no necesitan ser del mismo tipo para poder habitar en la misma lista.
Veamos unos ejemplos...
In [ ]:
lista1 = ["Hola", 1, 2.0, True]
In [ ]:
lista1
In [ ]:
lista2 = [2+3, 5+1, 4**2]
In [ ]:
lista2
Vamos a explorar ahora la parte de los índices y mutabilidad en una lista
Para acceder a un valor en una lista podemos hacer uso de los índices. Los índices empiezan desde cero.
In [ ]:
#Para especificar que queremos acceder a un valor en python, el objeto es seguido de corchetes con el índice deseado
lista1[0]
In [ ]:
lista2[2]
In [ ]:
#¿Qué pasa si damos un índice que no tiene un valor?
lista1[4]
¡Obvio! nos da un error de índice... Y nos dice qué está fuera del rango de valores que tenemos guardados en la lista
También tenemos acceso a un rango de valores
In [ ]:
#Vamos a pedirle a python que nos muestre los primero tres elementos de la lista1
lista1[0:3]
In [ ]:
#Veamos que pasa si le damos un índice mayor, a pesar de que sabemos que lista1[4] nos da un error
lista1[0:4]
In [ ]:
#Otra forma de mostrar todos los elementos es con ":"
lista2[:]
In [ ]:
#Aquí le estamos pidiendo a python que nos de todos los elementos de la lista menos el primero
lista1[1:]
In [ ]:
#Si queremos ver el último elemento pero no sabemos cuántos hay en una lista podemos usar el siguiente truco
lista1[-1]
In [ ]:
#Si no sabemos un índice, pero sabemos que hay un valor en una lista podemos preguntarle a python cuál es ese índice
#esto nos dice el índice del primer elemento que se encuentre con ese valor
#(si hay valores repetidos nos da el de menor índice)
lista1.index(2.0)
In [ ]:
lista2.index(5)
La parte "mutable" de las listas significa que podemos alterar el contenidos de estas al agregar elementos a la colección y/o cambiando el valor de algunos elementos.
Veamos como agregar elementos a las listas. Para esto usaremos el método .append(elemento) que tienen las listas
In [ ]:
lista1.append("nuevo")
In [ ]:
lista1
Como lo has de haber notado, el elemento nuevo que agregaste se va al final de la lista. Si quisieras que tu nuevo elemento estuviera en una posición específica tendrías que usar el método .insert(índice, elemento)
In [ ]:
lista1.insert(2, "soy")
In [ ]:
lista1
Hay ocasiones en las que no quieres agregar nuevos elementos, pero alterar el valor que tenías de los mismos, para esto puedes accesar por índice al elemento que quieras y directamente asignarle otro valor
In [ ]:
lista1[-1]='Nuevo'
In [ ]:
lista1
In [ ]:
In [ ]:
In [ ]:
In [ ]:
Lo mismo sucede con python. En este caso le tienes que dar ciertas condiciones que deben ser cumplidas, esto es que al evaluar una expresión, esta resulte en un cierto valor o en True para que siga con una operación. Si es necesario también se le pueden dar instrucciones para cuando la condición no sea cumplida.
Veamos unos ejemplos
In [ ]:
#Crea un elemento nuevo en una lista si la longitud es menor a 7 elementos
if len(lista1) < 7:
lista1.append('elemento')
In [ ]:
#Veamos qué pasó con lista1
lista1
In [ ]:
del(lista1[5])
In [ ]:
lista1
In [ ]:
#Si el primer valor de una lista es integer conviértelo a float, de lo contratio conviértelo a integer
if type(lista2[0]) is int:
lista2[0] = float(lista2[0])
else:
lista2[0] = int(lista2[0])
In [ ]:
#Veamos cómo quedó la lista 2
lista2
Aquí hay unas cosas que notar:
1. La estructura inicial de una expresión condicional es if <condición> :
2. Después de esto hay un espacio que nos indica que el código que escribiremos forma parte del condicional
3. La expresión se puede terminar ahí o podemos darle otra instrucción con else: (nótese que else se encuentra al mismo nivel que if)
4. El código que forma parte de else lleva también un espacio (estos espacios son llamados indentación)