Listas (introducción)#

Important

¿Cómo vamos?

Hasta el momento debemos tener claro lo siguiente:

En el ejercicio anterior tuvimos un breve acercamiento a diferentes tipos de datos guardados en variables, le brindamos una atención particular a las cadenas de caractéres porque permitían extraer subtextos, caracteres por separado, entre otros. Ese orden intrinseco en cada cadena lo extrapolaremos para organizar secuencias de cualquier tipo de objetos, en este sentido, nos referimos a las listas y a las tuplas. Nuestro objetivo es entender las similitudes y diferencias que hay entre ellas, como también tener presentes algunos de los métodos y funciones más útiles al trabajar con estos objetos.

Listas:#

Una lista es una estructura de datos en Python conformada como una secuencia de elementos ordenada y modificable. Cada elemento o valor que está dentro de una lista se llama elemento. Así como las cadenas se definen como caracteres entre comillas, las listas se definen teniendo sus elementos entre corchetes [ ... ] y separandolos con comas ,; es decir, para crear una lista basta con escribir entre corchetes los elementos que la componen separados por coma, así:

Lista = [Elemento_1,Elemento_2,Elemento_3,Elemento_4,Elemento_5]

Por ejemplo, el siguiente arreglo guarda los núumeros enteros de 0 a 3:

l = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
l
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

Las listas por lo general contienen elementos del mismo tipo, como ocurre con la lista que acabamos de definir, en la cual cada una de sus entradas es un número entero. Pero ellas pueden contener elementos de diferentes tipos, como por ejemplo:

m = ['hola', 1, 5.1, id(l)]
m
['hola', 1, 5.1, 139784284548672]

Aquí guardamos en m una lista con elementos del tipo str, int, float y el resultado de una función el cual es int.

Explorar una lista#

Para acceder a un elemento de la lista se emplea una notación similar a la utilizada en las cadenas de carcatéres:

nombre_de_la_lista[índice]

El índice de la lista hace referencia a la posición en la cual se encuentra el elemento y este es un número entero. El primer elemento de una lista tiene como índice el 0, el segundo es el índice 1 y así suscesivamente, lo anterior marca una gran diferencia con otros lenguajes de programación, en los cuales el primer elemento de una lista tiene índice 1.

m[0]
'hola'
m[1]
1
l[2]
2

Algunos índices negativos también se pueden utilizar, al emplear estos valores estamos indicando que la lista se recorre en orden inverso, es decir, el índice -1 es el último elemento de la lista, el -2 es el penúltimo, etc., como podemos ver a continuación:

l[-7]
3
l[3]
3

Para poder determinar con certeza el tamaño de la lista se emplea la función len(lista), la cual arroja como resultado dicho valor, por ejemplo

len(l)
10
len(m)
4

Si intentamos acceder a algún índice el cual no haga referencia a un índice de nuestra lista, obtendremos como resultado una excepción como la siguiente:

m[5]
---------------------------------------------------------------------------
IndexError                                Traceback (most recent call last)
Input In [10], in <cell line: 1>()
----> 1 m[5]

IndexError: list index out of range
l[-11]
---------------------------------------------------------------------------
IndexError                                Traceback (most recent call last)
<ipython-input-11-12331d1ebfb7> in <module>
----> 1 l[-11]

IndexError: list index out of range

En las listas podemos tener como índices números enteros, o expresiones que arrojen un número entero, por ejemplo

l[3] is l[2+1]
True

Ejemplo 1

(Días de la semana) Una lista que contengan los días de la semana.

Dias=["Lunes","Martes","Miércoles","Jueves","Viernes","Sábado","Domingo"]

Ejemplo 2

(Frutas y verduras) Haga una lista de frutas y verduras.

FV=["Fresas","Papaya","Limón","Brocoli","Acelgas","Espinacas"]

FV=["Fresas","Papaya","Limón","Brócoli","Acelgas","Espinacas"]
FV
['Fresas', 'Papaya', 'Limón', 'Brócoli', 'Acelgas', 'Espinacas']

El contenido de las listas se puede modificar de manera muy sencilla, accedemos a la posición que deseamos modificar y asignamos el valor que deseamos esté allí, por ejemplo:

m[0] = 1
m
[1, 1, 5.1, 139966479745280]

Esto muestra que las listas son objetos mutables, es decir, que se pueden modificar.

Pero no todas las secuencias de objetos lo son, por ejemplo, al definir la cadena s = 'hola', no podemos modificar el elemento s[0]:

s = 'hola'
s[0]
'h'
s[0] = 'B'
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-19-c86b3aa16af8> in <module>
----> 1 s[0] = 'B'

TypeError: 'str' object does not support item assignment

Una necesidad recurrente es: agregar elementos a una lista, para ello la forma más natural de hacerlo es mediante el método

lista.append(elemento_a_agregar)
l
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
l.append('diez')
l
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 'diez']

Las listas pueden concatenarse, es decir, dadas dos listas, obtendremos como resultado una nueva lista que tenga los elementos de la primera lista seguido de los de la segunda, así:

M = l+m
M
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 'diez', 1, 1, 5.1, 139966479745280]

Esto nos permite agregar elementos a una lista de otra manera, empleando el operador +=, como podemos ver:

l += [11]
l
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 'diez', 11]

En otras palabras, para agregar elementos a una lista tenemos dos formas:

  • Una empleando el método lista.append(elemento_a_agregar).

  • Otro por medio del operador, += así: lista += [elemento_a_agregar].

Ejercicio#

  1. Crea un bloque de código que dada una lista en blanco vaya agregando elementos a esta. Dichos elementos deberán ser la suma de los índices hasta la posición en que se halla el elemento.