Está en la página 1de 9

Unidad 02 (Parte B) – Listas

Lecture Notes
OBJETIVOS DE LA ASIGNATURA

OBJETIVO GENERAL:

Desarrollar programas en un lenguaje de programación de alto nivel para resolver


problemas relacionados a su profesión.

OBJETIVOS ESPECÍFICOS:

1. Aplicar métodos computacionales para resolver problemas de su campo de estudio


utilizando un lenguaje de programación.

2. Utilizar herramientas computacionales para modelar y entender datos.

3. Aplicar algoritmos receta en la resolución de problemas.

4. Utilizar un ambiente de desarrollo para escribir y depurar programas.

5. Utilizar modularización para la simplificación de la estructura de un programa.

OBJETIVO ESPECÍFICO DE LA UNIDAD:

• Identificar las propiedades de las listas como herramienta de agrupación de


datos.
• Aplicar indexación básica y slicing para la manipulación de datos representados
con listas.
• Reconocer las funciones básicas de listas para el manejo de datos.
• Implementar programas utilizando listas para la resolución de problemas.

CONTENIDOS:

4.1. Propiedades de las listas.


4.2. Indexación básica.
4.3. Slicing
4.4. Funciones básicas.
4.5. Manejo de caracteres como listas.
Introducción

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.

Las listas al rescate (Propiedades de una lista e indexación básica)

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.

Veamos el siguiente ejemplo:


temperaturas = [31.3, 31.1, 32.1, 32.2, 31.4, 30.2, 29.7, 29.9, 30.8,
30.3, 31.0, 32.0]

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)

Hmm, ¿dónde hemos visto algo parecido?...


nombre = ‘Rafael’
for i in len(nombre):
print(nombre[i])

O mejor aún:
for letra in nombre:
print(letra)

Si quisiera tener acceso al índice y a la letra en ese índice:


for índice, letra in enumerate(nombre):
print(índice, letra)

Claro, los strings.

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:

Operador Descripción Ejemplo de uso


+ Concatena dos listas l3 = l1 + l2
* Concatena una lista n veces l2 = l1 * 4
in Retorna True si se encuentra un valor en la lista valor in l1

Funciones:

Función Descripción Ejemplo de uso


len() Retorna el número de elementos en una lista len(L)
len(L[i:j])
max() Retorna el máximo valor en una lista max(L)
max(L[i:j])
min() Retorna el mínimo valor en una lista min(L)
min(L[i:j])
list() Convierte una secuencia o colección de valores a list(seq)
lista
del() Elimina uno o más elementos de una lista del(L[1])
del(L[i:j])
sum() Retorna la suma de todos los valores de una lista suma = sum(L)

Métodos:

Método Descripción Ejemplo de uso


append() Añade un elemento al final de la lista l.append(obj)
extend() Añade uno o más elementos al final l.extend(seq)
de la lista
insert(i, obj) Inserta un elemento en la posición i l.insert(i, obj)
de la lista
pop() Elimina el último elemento de la lista valor = l.pop()
o el elemento en un índice dado y lo valor = l.pop(i)
retorna
remove() Elimina el la primera ocurrencia de un l.remove(x)
valor en la lista
clear() Elimina todos los elementos de la lista l.clear()
copy() Crea una copia de la lista l.copy()
reverse() Invierte el orden de la lista l.reverse()
sort(), Ordena la lista l.sort(),
sort(reverse=False) l.sort(reverse=False)
index() Retorna el índice de la primera l.index(x)
ocurrencia de un valor en la lista l.index(x, desde)
count() Retorna el número de veces que se l.count(x)
encuentra un valor en la lista

Creando una lista

Estas son las formas más comunes de crear una lista


lista = [] #crea una lista vacía
lista = list() #crea una lista vacía
lista = [‘a’, ‘b’, ‘c’] #crea una lista con 3 elementos a, b, c
lista = [i * 2 for i in range(1,6)] #crea una lista con los números
pares entre 2 y 10 inclusive

Tip 4.1 El formato para esta forma de crear una lista es:
lista = [expresión for variable in secuencia]

lista = list(‘abc’) #crea una lista con 3 elementos a, b, c


lista = list(i for i in ‘abc’) #crea una lista con 3 elementos a, b, c

Duplicando una lista

Las siguientes instrucciones permiten crear una copia de una lista


lista2 = lista1[:]
lista2 = lista1.copy()

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.

Modificando una lista

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]

Añadiendo elementos a la lista

Se puede añadir elementos a una lista usando insert.


>>> lista = [1, 2, 3, 4, 5]
>>> lista.insert(5, 6) #añade el valor 6 al final de la lista
>>> lista
[1, 2, 3, 4, 5, 6]
>>> lista.insert(3, 10) #inserta el valor 10 como cuarto elemento en
la lista
>>> lista
[1, 2, 3, 10, 4, 5, 6]

La función append permite añadir elementos al final de la lista:


>>> lista = [1, 2, 3, 4, 5]
>>> lista.append(6)
>>> lista
[1, 2, 3, 4, 5, 6]

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.

Borrando elementos de la lista

Se pueden borrar elementos de una lista utilizando las siguientes opciones:


>>> lista = [1, 2, 3, 4, 5]
>>> del(lista[1])
>>> lista
[1, 3, 4, 5]
>>> lista = [1, 2, 3, 4, 5]
>>> del(lista[1:4])
>>> lista
[1, 5]
>>> lista = [1, 2, 3, 4, 5]
>>> valor = lista.pop()
>>> lista
[1, 2, 3, 4]
>>> valor
5
>>> lista = [1, 2, 3, 4, 5]
>>> valor = lista.pop(1)
>>> lista
[1, 3, 4, 5]
>>> valor
2
>>> lista = [1, 2, 3, 4, 5]
>>> lista = ['a', 'b', 'c', 'd', 'e']
>>> lista.remove('d')
>>> lista
['a', 'b', 'c', 'e']

Manejo de caracteres como listas

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'>

Lastimosamente, la conversión de lista a string no funciona de la manera que esperaríamos:


>>> str(listaMeses)
"['Enero', 'Febrero', 'Marzo', 'Abril', 'Mayo', 'Junio', 'Julio',
'Agosto', 'Septiembre', 'Octubre', 'Noviembre', 'Diciembre']"

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?

También podría gustarte