Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Lecture Notes
OBJETIVOS DE LA ASIGNATURA
OBJETIVO GENERAL:
OBJETIVOS ESPECÍFICOS:
CONTENIDOS:
A todos nos queda claro que una variable permite “almacenar” un valor para usarlo en cualquier otra
instrucción en nuestro programa. Pero, ¿qué pasa si queremos almacenar más de un valor en una
misma variable? Por ejemplo, queremos registrar el promedio de la temperatura máxima en Guayaquil
durante los 12 meses del año 2015.
Colección de datos
Con lo visto hasta el momento, necesitamos 12 variables individuales para registrar la temperatura de
cada mes. Claro, 12 variables suena a bastante pero tampoco imposible. Pero ¿qué tal si queremos
registrar las temperaturas mensuales del 2014 y 2015? ¿o de los últimos 10 años? ¿o de los últimos 25
años? ¿50 años? ¿100 años? You get my point.
Para todos estos casos, trabajar con variables individuales no es la solución. Tiene que existir una mejor
alternativa.
Justamente la solución la encontramos en las listas (y más adelante en otros tipos de colecciones de
datos). Una lista agrupa una serie de valores en un solo lugar y ofrece mecanismos para manipular
valores individualmente o como parte de un grupo. Todos los valores en una lista están asociados a un
índice que permite saber su posición en la misma.
Estamos definiendo una lista llamada temperaturas con las 12 temperaturas promedio para Guayaquil
durante el 2015. No hay necesidad de definir 12 variables individuales, una sola lista es suficiente.
Ahora, si quisiera saber la temperatura promedio del tercer mes (marzo) del 2015 se puede escribir:
print(‘La temperatura de Marzo 2015 fue:’, temperaturas[2])
Ehhhh, marzo es el tercer mes no el segundo. Es correcto, pero recordemos que los índices en Python
empiezan en cero. Entonces, si quisiera mostrar todos los elementos de la lista basta con escribir:
for i in len(temperaturas):
print(temperaturas[i])
O mejor aún:
for temperatura in temperaturas:
print(temperatura)
Si quisiera tener acceso al índice y al elemento de la lista en ese índice:
for índice, temperatura in enumerate(temperaturas):
print(índice, temperatura)
O mejor aún:
for letra in nombre:
print(letra)
Aun cuando no son lo mismo, los strings y las listas muestran características y comportamientos
similares. Usemos esto a nuestro favor para entender mejor aún a las listas.
Slicing
El slicing en las listas es igual que en los string. Veamos algunos ejemplos:
>>> tempPrimerTrimestre = temperaturas[:3]
>>> tempPrimerTrimestre
[31.3, 31.1, 32.1]
>>> temp = temperaturas[4:7]
>>> temp
[31.4, 30.2, 29.7]
>>> temperaturas[-1]
32.0
Métodos y funciones básicas
Al igual que con otros tipos de datos, las listas también tienen un grupo de operadores, funciones y
métodos para realizar las principales tareas.
Operadores:
Funciones:
Métodos:
Tip 4.1 El formato para esta forma de crear una lista es:
lista = [expresión for variable in secuencia]
Pero
lista2 = lista1
no crea un duplicado de lista1, en cambio genera un alias para lista1 llamado lista2. Es decir,
lista1 y lista2 hacen referencia a la misma lista. Si se modifica lista1 también se modifica
lista2 y viceversa. De igual forma lista1 = lista2 = [] crea una sola lista vacía que es
referenciada por lista1 y lista2.
Una lista puede ser modificada un elemento a la vez o varios elementos a la vez
>>> lista = [1, 2, 3, 4, 5]
>>> lista[0] = 10
>>> lista
[10, 2, 3, 4, 5]
>>> lista[1:] = [20, 30, 40, 50]
>>> lista
[10, 20, 30, 40, 50]
Para poder añadir múltiples elementos a la lista, se debe usar append o extend con la lista de valores
a añadir. En principio ambas funciones parecen comportarse igual
>>> lista = [1, 2, 3, 4, 5]
>>> lista.extend([6, 7, 8, 9, 10])
>>> lista
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> lista = [1, 2, 3, 4, 5]
>>> lista.append([6, 7, 8, 9, 10])
>>> lista
[1, 2, 3, 4, 5, [6, 7, 8, 9, 10]]
Pero luego de analizar la salida, vemos que extend añade individualmente cada uno de los nuevos
valores mientras que append añade la lista de nuevos valores como una lista dentro de la lista.
¿Puede una lista contener otra lista? Sí, pero eso lo discutiremos en otro momento.
La relación entre strings y listas es tal que es posible en Python convertir un string a lista como lo vimos
en un ejemplo anterior:
>>> cadena = 'hola, mundo'
>>> lista = list(cadena)
>>> lista
['h', 'o', 'l', 'a', ',', ' ', 'm', 'u', 'n', 'd', 'o']
Pero dado que los strings tienen operadores y funciones similares a las disponibles en listas, no es muy
común hacer esta conversión.
Método split()
La mayor interacción entre strings y listas se da mediante el método split() disponible para los
strings. Este método permite dividir un string en partes indicando un separador y el resultado es una
lista con las partes. Veamos un ejemplo:
>>> meses = 'Enero, Febrero, Marzo, Abril, Mayo, Junio, Julio, Agosto,
Septiembre, Octubre, Noviembre, Diciembre'
>>> listaMeses = meses.split(', ')
>>> listaMeses
['Enero', 'Febrero', 'Marzo', 'Abril', 'Mayo', 'Junio', 'Julio',
'Agosto', 'Septiembre', 'Octubre', 'Noviembre', 'Diciembre']
>>> type(meses)
<class 'str'>
>>> type(listaMeses)
<class 'list'>
El string resultado contiene una representación del contenido de la lista como cadena de caracteres.
Noten que se incluyen las comillas, comas y hasta los corchetes []. Esto no nos deja otra opción que
convertir manualmente una lista a string usando lazos de repetición. ¿Se atreven a hacerlo?