Ejercicios con listas
Las listas constituyen uno de los tipos de datos fundamentales del lenguaje python. En este artículo se presentarán algunas de los métodos y funciones aplicables a las listas.
Estos ejercicios se realizaron con Jupyter Notebook, como convención las entradas se han colocado con color verde y las salidas en color rojo itálica, para poder diferenciarlos y mejorar la legibilidad de los ejemplos.
Crear una Lista
para crear una lista simplemente coloque una secuencia de elementos separados por comas, dentro de corchetes. Esta lista se puede asociar a una variable como en el ejemplo siguiente.
frutas=[‘mango’,’manzana’, ‘melon’,’pera’,’parchita’,’limon’]
# se creó una lista con 6 elementos
# los índices de una lista comienzan en 0
frutas
[‘mango’, ‘manzana’, ‘melon’, ‘pera’, ‘parchita’, ‘limon’]
Otra forma de crear una lista, función list
Otra forma de crear una lista es utilizando la función list([ ])
nombres= list([‘pedro’, ‘maria’,’juan’, ‘luis’, ‘lourdes’, ‘patty’, ‘mirian’])
nombres
[‘pedro’, ‘maria’, ‘juan’, ‘luis’, ‘lourdes’, ‘patty’, ‘mirian’]
Índices de las listas
Las listas comienzan desde el índice 0. para acceder a un elemento se coloca el nombre de la lista seguido de su índice entre corchetes.
frutas[0]
‘mango’
frutas[1]
‘manzana’
frutas
[‘mango’, ‘manzana’, ‘melon’, ‘pera’, ‘parchita’, ‘limon’]
nombres[0]
‘pedro’
nombres[1]
‘maria’
Slicing una lista
Se puede obtener una porción de una lista (slice) utilizando el operador dos puntos entre corchete, donde el primer elemento es el inicio del slice, el segundo elemento es el final del slice, sin incluirlo a él.
frutas[:5]
[‘mango’, ‘manzana’, ‘melon’, ‘pera’, ‘parchita’]
frutas[0:5]
[‘mango’, ‘manzana’, ‘melon’, ‘pera’, ‘parchita’]
Se observa que ambas formas son equivalentes: [:5] y [0:5] se seleccionan desde el primer elemento, índice 0 hasta el elemento con índice 4, no incluye al elemento con índice 5. Esta nomenclatura a veces es difícil de acostumbrarse, el truco es que en el rango el primer índice del elemento es incluido, pero el último índice del elemento es excluido. [1:3] incluye al elemento de índice 1 y al elemento de índice 2, no incluye al elemento de índice 3. [0:4] incluye a los elementos desde el índice 0 hasta el índice 3. No incluye al elemento de índice 4. [:4] es equivalente a la estructura anterior. [2:] incluye desde el índice 2 hasta el último elemento de la lista.
frutas[2:]
[‘melon’, ‘pera’, ‘parchita’, ‘limon’]
frutas[:4]
[‘mango’, ‘manzana’, ‘melon’, ‘pera’]
Se puede incluir un tercer elemento para indicar el espaciamiento, pasos entre elementos. frutas[0:5:2] comienza en el índice 0 y luego salta de dos en dos, 2, 4, no incluye el índice 5.
frutas[0:5:2]
[‘mango’, ‘melon’, ‘parchita’]
Se aceptan índices negativos
Se aceptan índices negativos, e indican los elementos en orden inverso, así [-1] indica el último elemento de la lista, [-2] indica el penúltimo elemento de la lista.
frutas[-1]
# Corresponde al último elemento de la lista.
‘limon’
frutas[-2:]
# corresponde a los dos elementos finales de la lista.
[‘parchita’, ‘limon’]
frutas[:-1]
# va desde el índice 0 hasta el índice final, pero sin incluirlo.
[‘mango’, ‘manzana’, ‘melon’, ‘pera’, ‘parchita’]
frutas[-1::-1]
# hemos invertido el orden de la lista, comenzando en el último elemento y con paso negativo de 1.
[‘limon’, ‘parchita’, ‘pera’, ‘melon’, ‘manzana’, ‘mango’]
Métodos que aplican a las listas
Algunos métodos que pueden aplicar a las listas se muestran a continuación:
append, clear, copy, count, extend, index, insert, pop, remove, reverse, sort.
Método append()
El método append agrega elementos al final de la lista. La sintaxis es la que se muestra a continuación:
Lista.append(‘new element’)
El nuevo elemento puede ser una cadena de caracteres (string), un número, una lista, un tuple, un diccionario.
frutas.append(‘guayaba’)
# Aquí se añadió el elemento ‘guayaba’ (una cadena de caracteres) al final de la lista.
frutas
[‘mango’, ‘manzana’, ‘melon’, ‘pera’, ‘parchita’, ‘limon’, ‘guayaba’]
frutas.append([‘cereza’,’ciruela’,’uva’])
# Aquí se añadió una lista
frutas
[‘mango’,
‘manzana’,
‘melon’,
‘pera’,
‘parchita’,
‘limon’,
‘guayaba’,
[‘cereza’, ‘ciruela’, ‘uva’]]
type(frutas)
# con la función type() se ve que el tipo de dato es una lista
list
frutas[-1]
# se observa que el último elemento que hemos añadido es una lista
[‘cereza’, ‘ciruela’, ‘uva’]
Método extend
Este método se parece al método append, pero aquí la lista se extiende elemento por elemento del objeto iterable. Con append habíamos visto que el objeto iterable se añadía como un elemento completo, no elemento por elemento. La sintaxis es:
Lista.extend(objeto iterable, /)
Lista es el nombre de la lista a la que le queremos añadir elementos. objeto iterable es un objeto que puede ser recorrido elemento por elemento.
New_f=[‘banana’,’aguacate’,’tomate’]
# Creamos una lista y la llamamos New_f (objeto iterable)
frutas.extend(New_f)
# Aquí utilizamos el método extend para extender la lista frutas elemento por elemento# con la nueva lista New_f
frutas
[‘mango’,
‘manzana’,
‘melon’,
‘pera’,
‘parchita’,
‘limon’,
‘guayaba’,
[‘cereza’, ‘ciruela’, ‘uva’],
‘banana’,
‘aguacate’,
‘tomate’]
Pasando el contenido de una lista a otra con otro nombre
Podemos crear una copia de una lista simplemente asignando la lista a otra variable, por ejemplo
New_Lista = Old_Lista
Pasa el contenido de Old_Lista a New_Lista. Ambas variables tienen el mismo contenido. y se mantienen iguales. Los cambios que se hacen en una se pasan a la otra.
hf=frutas
# se creó una variable hf y se le cargó el contenido de la lista frutas
hf
[‘mango’,
‘manzana’,
‘melon’,
‘pera’,
‘parchita’,
‘limon’,
‘guayaba’,
[‘cereza’, ‘ciruela’, ‘uva’],
‘banana’,
‘aguacate’,
‘tomate’]
frutas
[‘mango’,
‘manzana’,
‘melon’,
‘pera’,
‘parchita’,
‘limon’,
‘guayaba’,
[‘cereza’, ‘ciruela’, ‘uva’],
‘banana’,
‘aguacate’,
‘tomate’]
Se observa que ambas listas hf y frutas son iguales, tienen el mismo contenido.
hf==frutas
True
Método remove
Este método elimina la primera ocurrencia de un elemento de la lista. La sintaxis es la siguiente:
Lista.remove(value, /)
Aquí utilizamos la lista hf y eliminamos el elemento ‘manzana’ de la lista
hf.remove(‘manzana’)
hf
[‘mango’,
‘melon’,
‘pera’,
‘parchita’,
‘limon’,
‘guayaba’,
[‘cereza’, ‘ciruela’, ‘uva’],
‘banana’,
‘aguacate’,
‘tomate’]
Método pop
El método pop se utiliza para mostrar y eliminar un elemento de la lista por su índice. por defecto elimina el último elemento de la lista. pero puede indicarse el índice del elemento que desea eliminarse. La sintaxis es:
Lista.pop(self, index=-1, /)
Por ejemplo, eliminemos de la lista hf el índice 6, el cual corresponde al elemento lista [‘cereza’, ‘ciruela’, ‘uva’]
hf.pop(6)
# se muestra y se elimina el elemento de la lista hf con índice 6.
[‘cereza’, ‘ciruela’, ‘uva’]
hf
[‘mango’,
‘melon’,
‘pera’,
‘parchita’,
‘limon’,
‘guayaba’,
‘banana’,
‘aguacate’,
‘tomate’]
hf==frutas
True
frutas.insert(2,’papaya’)
frutas
[‘mango’,
‘melon’,
‘papaya’,
‘pera’,
‘parchita’,
‘limon’,
‘guayaba’,
‘banana’,
‘aguacate’,
‘tomate’]
Creando una copia independiente, no ligada
Para crear una copia no ligada a la original, como la que creamos anteriormente debe crear una nueva lista vacía, y luego con extend pasar los elementos de la lista que queremos copiar.
g_f=[]
# creamos una lista vacía.
g_f.extend(hf)
# con el método extend pasamos los elementos de la lista hf a la nueva lista g_f
g_f
[‘mango’,
‘melon’,
‘papaya’,
‘pera’,
‘parchita’,
‘limon’,
‘guayaba’,
‘banana’,
‘aguacate’,
‘tomate’]
g_f==hf
# probamos que ambas listas son iguales
True
g_f.remove(‘tomate’)
# Eliminamos un elemento de la nueva lista g_f.
g_f==hf
# Comprobamos que ya no son iguales g_f y hf, ahora funcionan independientemente.
False
Método Insert
Este método permite insertar un objeto delante del índice especificado. si se coloca índice 2, por ejemplo, el nuevo objeto ocupará el índice 2 y el elemento de la lista que ocupaba este índice ocupará el índice siguiente, 3.
Lista.insert(index, object, /)
# Trabajemos con la lista g_f que creamos. e insertemos un elemento en la posición 2, ocupada actualmente por ‘papaya’.
g_f
[‘mango’,
‘melon’,
‘papaya’,
‘pera’,
‘parchita’,
‘limon’,
‘guayaba’,
‘banana’,
‘aguacate’]
g_f.insert(2,’toronja’)
# insertamos ‘toronja’ en la posición 2. Recordar que los índices comienzan a contar desde 0.
g_f
[‘mango’,
‘melon’,
‘toronja’,
‘papaya’,
‘pera’,
‘parchita’,
‘limon’,
‘guayaba’,
‘banana’,
‘aguacate’]
Insertemos ‘mango’ en varias posiciones para utilizar luego el siguiente método count
g_f.insert(3, ‘mango’)
g_f.insert(5, ‘mango’)
g_f.insert(7, ‘mango’)
g_f
[‘mango’,
‘melon’,
‘toronja’,
‘mango’,
‘papaya’,
‘mango’,
‘pera’,
‘mango’,
‘parchita’,
‘limon’,
‘guayaba’,
‘banana’,
‘aguacate’]
Función len()
Esta función permite conocer el número de elementos que tiene una lista. Su sintaxis es:
len(Lista)
len(g_f)
13
Método Count
Este método permite contar el número de ocurrencias de un elemento dentro de la lista. su sintaxis es:
Lista.count(value, /)
g_f.count(‘mango’)
4
g_f.count(‘papaya’)
1
Hay cuatro ocurrencias de ‘mango’ y una ocurrencia de ‘papaya’
Método Sort
El método sort hace un ordenamiento de la lista «In Place», es decir hace un cambio permanente en la lista.
List.sort( /, *, key=None, reverse=False)
| Stable sort IN PLACE.
g_f.sort()
# tiene dos parámetros key= None y reverse=False que ya tienen sus valores por defecto. así que puede utilizarse con los dos paréntesis sin argumentos dentro.
g_f
[‘aguacate’,
‘banana’,
‘guayaba’,
‘limon’,
‘mango’,
‘mango’,
‘mango’,
‘mango’,
‘melon’,
‘papaya’,
‘parchita’,
‘pera’,
‘toronja’]
Método Clear
Este método elimina todos los elementos de una lista. La sintaxis es la que se muestra a continuación.
List.clear(self, /)
nombres
[‘pedro’, ‘maria’, ‘juan’, ‘luis’, ‘lourdes’, ‘patty’, ‘mirian’]
# Tenemos una lista con el nombre nombres. Vamos a eliminar los elementos de la lista.
nombres.clear()
nombres
[]
El resultado es una lista vacía.
Función del()
Esta función permite eliminar un elemento de una lista. Su sintaxis es:
del(lista[indice]
g_f
[‘aguacate’,
‘banana’,
‘guayaba’,
‘limon’,
‘mango’,
‘mango’,
‘mango’,
‘mango’,
‘melon’,
‘papaya’,
‘parchita’,
‘pera’,
‘toronja’]
del(g_f[4])
# elimina el elemento con indice 4, uno de los ‘mango’
g_f
[‘aguacate’,
‘banana’,
‘guayaba’,
‘limon’,
‘mango’,
‘mango’,
‘mango’,
‘melon’,
‘papaya’,
‘parchita’,
‘pera’,
‘toronja’]
Averiguar si un valor es parte de una lista
podemos averiguar si un valor es parte de una lista, utilizando el comando in, la sintaxis es la que se muestra a continuación.
Valor in Lista
si el valor está dentro de la lista el resultado será True, caso contrario False. Si el valor que estamos interesados en averiguar es una cadena de caracteres esta debe estar entre comillas.
‘papaya’ in g_f
True
Creando una nueva lista como subconjunto de otra lista
Utilizando slices se puede crear una nueva lista a partir de otra, por ejemplo, a partir de la lista Frutas vamos a obtener otra, la cual llamaremos frutas2, utilizando slices.
frutas
[‘mango’,
‘melon’,
‘papaya’,
‘pera’,
‘parchita’,
‘limon’,
‘guayaba’,
‘banana’,
‘aguacate’,
‘tomate’]
frutas2 = frutas[2:6]
# frutas2 va a tener 4 elementos: índices 2, 3, 4, 5 (no incluye el elemento de índice 6)
frutas2
[‘papaya’, ‘pera’, ‘parchita’, ‘limon’]
frutas2==frutas
False