Listas con Python

Las listas en Python contienen una secuencia de objetos relacionados, separados entre ellos mediante comas y metidos entre corchetes [ ].

  • Pueden contener diferentes elementos.
  • Son mutables.
  • Son una secuencia en Python, como las tuplas, rangos y strings.

List en Python

Vamos a escribir algunos sencillos ejemplos de listas en Python.

mi_lista = [1, 3, 5, 7, 9]
mi_lista = ['a', 'b', 'c', 'd']
mi_lista = [1, 'Hola', 20.051, 'Hasta otra']

Las listas pueden contener diferentes elementos, incluso pueden contener otras listas en su interior como elemento.

mi_lista = [1, 20.051, ['Hola', 'Hasta otra']]

Podemos ver que se trata de una lista con la función type().

mi_lista = [1, 20.051, ['Hola', 'Hasta otra']]
print(f'Soy de tipo {type(mi_lista)}')

# Soy de tipo <class 'list'>

Podemos conocer el número de elementos de nuestra lista con len(). Así, en el ejemplo siguiente, el elemento lista que tenemos dentro de la lista cuenta como un elemento aunque en su interior existan dos.

mi_lista = [1, 20.051, ['Hola', 'Hasta otra']]
print(f'Hay {len(mi_lista)} elementos')

# Hay 3 elementos

Los tres elementos de la lista:

  • Elemento 1 → 1
  • Elemento 2 → 20.051
  • Elemento 3 → [‘Hola’, ‘Hasta otra’]

Constructor list en Python

Es posible crear una lista en Python mediante el constructor list(). Debemos tomar en consideración que se debe construir con doble paréntesis.

mi_lista = list((2, 4, 6, 'Hola', [1, 3, 5]))
print(f'Soy de tipo {type(mi_lista)}')

# Soy de tipo <class 'list'>

También podemos crear una lista directamente de un string.

mi_lista = list('Badajoz')
print(mi_lista)

# ['B', 'a', 'd', 'a', 'j', 'o', 'z']

Accediendo a elementos de una lista

Podemos acceder a los elementos de una lista mediante su índice. No olvidemos que el índice comienza siempre con 0.

mi_lista = list((2, 4, 6, 'Hola', [1, 3, 5]))
print(f'Soy elemento 4 de la lista → {mi_lista[4]}')
# Soy elemento 4 de la lista → [1, 3, 5]

print(f'Soy elemento 3 de la lista → {mi_lista[3]}')
# Soy elemento 3 de la lista → Hola

Es posible acceder a los valores de nuestra lista mediante un índice negativo. De la misma forma que con las cadenas de texto, la última posición es -1.

mi_lista = list((2, 4, 6, 'Hola', [1, 3, 5]))
print(f'Soy el elemento último (-1) → {mi_lista[-1]}')
# Soy el elemento último (-1) → [1, 3, 5]

mi_lista = list((2, 4, 6, 'Hola', [1, 3, 5]))
print(f'Soy el elemento último (-2) → {mi_lista[-2]}')
# Soy el elemento último (-2) → Hola

De la misma forma que hemos hecho con las cadenas en Python, podemos acceder a un trozo de nuestro string.

[posición comienzo: hasta la posición: paso]

mi_lista = 'Badajoz es una bonita ciudad'
mi_lista[1: 10: 1]    
# 'adajoz es'

mi_lista[1: 10: 2]
# 'aao s'

mi_lista[10: 20: 1]
# ' una bonit'

Podemos consultar la posición que ocupa algún valor dentro de nuestra lista de Python. Para que devuelva un valor debe existir como True; de lo contrario, devolverá False.

Para ver si determinado valor existe en nuestra lista.

mi_lista = list(('a', 'b', 'c', 'd'))
'a' in mi_lista
# True

'g' in mi_lista
# False

Una vez comprobado que el valor que buscamos está en la lista, veamos qué posición ocupa determinado valor. Para el ejemplo en que utilizamos la f string tendremos que colocar el valor “c” entre comillas dobles.

mi_lista = list(('a', 'b', 'c', 'd'))
if 'c' in mi_lista:
    print(f'Ocupa la posición {mi_lista.index("c")}')

# Ocupa la posición 2

Si buscásemos la posición de un valor que no existe en nuestra cadena, obtendríamos un error que indicaría que ese valor no está en nuestra lista.

mi_lista = list(('a', 'b', 'c', 'd'))
print(f'Ocupa la posición {mi_lista.index("h")}')

# ValueError: 'h' is not in list

Cuando tengamos listas que contengan solo cadenas de texto o números, podemos utilizar las funciones max() y min(). En el caso de los números, no tendríamos que tener nada en cuenta, ya que el número mínimo es el más pequeño y el máximo es el mayor.

mi_lista = [1, 2, 3, 4]
print(f'Menor de la lista {min(mi_lista)}')
# Menor de la lista 1

mi_lista = [1, 2, 3, 4]
print(f'Mayor de la lista {max(mi_lista)}')
# Mayor de la lista 4

Cuando trabajamos con una lista de string, debemos tener en cuenta el valor de la posición del carácter en la tabla ASCII. Puedes ver estos valores en cualquier tabla ASCII en internet. Para este ejemplo será suficiente con conocer los siguientes valores:

CarácterASCII
149
553
A65
G71
a97
b98
c99

Podemos ver que la letra G mayúscula tiene un valor ASCII → 71, que es menor que la letra c minúscula que tiene un valor ASCII → 99. Por esta razón, la G mayúscula siempre será menor que la c minúscula.

mi_lista = ['1', '5', 'A', 'C', 'a', 'b', 'c']
print(f'Menor de la lista {min(mi_lista)}')
# Menor de la lista 1

print(f'Mayor de la lista {max(mi_lista)}')
# Mayor de la lista c

Al utilizar cadenas de texto, se sigue teniendo en cuenta el valor del primer carácter de la cadena.

mi_lista = ['arboleda de castaños', 'Casa de un amigo que vive en Jerez']
print(min(mi_lista))
# Casa de un amigo que vive en Jerez

print(max(mi_lista))
# arboleda de castaños

Ordenar listas con sort()

Mediante el método sort() podemos ordenar nuestras listas de forma sencilla y rápida.

Podemos hacerlo de forma alfabética teniendo en cuenta lo que hemos visto anteriormente del valor ASCII para las mayúsculas y minúsculas.

mi_lista = ['Uno', 'dos', 'tres', 'Cuatro']
mi_lista.sort()
print(mi_lista)

# ['Cuatro', 'Uno', 'dos', 'tres']

Podemos agregar el argumento reverse=True para hacer que nuestro orden sea inverso (ojo siempre con el valor ASCII de mayúsculas y minúsculas).

mi_lista = ['Uno', 'dos', 'tres', 'Cuatro']
mi_lista.sort(reverse=True)
print(mi_lista)

# ['tres', 'dos', 'Uno', 'Cuatro']

De la misma forma, podemos ordenar nuestra lista según el valor de los números.

mi_lista = [100, 2, 14, 43, 900]
mi_lista.sort()
print(mi_lista)
# [2, 14, 43, 100, 900]

# Con reverse=True
mi_lista = [100, 2, 14, 43, 900]
mi_lista.sort(reverse=True)
print(mi_lista)
# [900, 100, 43, 14, 2]

Modificando una lista con Python

Modificar lista

Podemos modificar nuestras listas en Python de varias formas. Una de ellas es acceder a determinado elemento mediante su índice y asignarle otro valor.

mi_lista = ['a', 'b', 'c', 'd', 'e', 'f']
print(mi_lista)
# ['a', 'b', 'c', 'd', 'e', 'f']

mi_lista[0] = 'X'
# ['X', 'b', 'c', 'd', 'e', 'f']

También podemos modificar un rango de valores de nuestra lista de una sola vez. En este ejemplo modificaremos por el valor X todas las posiciones desde la 0 hasta la 3 (0, 1, 2).

mi_lista = ['a', 'b', 'c', 'd', 'e', 'f']
print(mi_lista)
# ['a', 'b', 'c', 'd', 'e', 'f']

mi_lista[0:3] = 'X'
# ['X', 'd', 'e', 'f']

Insertar nuevos elementos en la lista

Podemos insertar un elemento en una posición determinada de nuestra lista mediante insert() solo con indicarle el índice en el que vamos a insertarlo y el valor.

En este ejemplo vamos a insertar el valor ‘h’ en la posición 3.

mi_lista = ['a', 'b', 'c', 'd', 'e', 'f']
print(mi_lista)
# ['a', 'b', 'c', 'd', 'e', 'f']

mi_lista.insert(3, 'h')
print(mi_lista)
# ['a', 'b', 'c', 'h', 'd', 'e', 'f']

También podemos agregar elementos al final de una lista mediante append().

mi_lista = ['a', 'b', 'c', 'd', 'e', 'f']
print(mi_lista)
# ['a', 'b', 'c', 'd', 'e', 'f']

mi_lista.append('nuevo item')
print(mi_lista)
# ['a', 'b', 'c', 'd', 'e', 'f', 'nuevo item']

Podemos añadir los elementos de una lista a otra mediante el método extend().

mi_lista = ['a', 'b', 'c']
otra_lista = [1, 2, 3]
mi_lista.extend(otra_lista)
print(mi_lista)

# ['a', 'b', 'c', 1, 2, 3]

Eliminar elementos de una lista

Se pueden eliminar elementos de nuestra lista de dos formas diferentes: accediendo con su valor o desde su índice.

Eliminar un elemento de una lista por su valor con remove().

mi_lista = ['a', 'b', 'c']
mi_lista.remove('b')

# ['a', 'c']

Eliminar un elemento de una lista por su índice con pop(). Si por error no especificamos ningún índice, se eliminará de forma automática el último elemento de nuestra lista.

También podemos utilizar del() para eliminar mediante el índice.

mi_lista = ['a', 'b', 'c']
mi_lista.pop(0)
print(mi_lista)
# ['b', 'c']

mi_lista = ['a', 'b', 'c']
del mi_lista[2]
print(mi_lista)
# ['a', 'b']

Eliminar lista con Phython

Podemos eliminar una lista completamente, o eliminar todos los elementos de una lista pero que esta siga siendo una lista vacía.

Eliminando lista con del()

Si después de eliminar una lista con del() intentamos mostrarla en consola, nos indicará en forma de error que nuestra lista no está definida, que no existe.

mi_lista = [1, 2, 3, 4]
del mi_lista
print(mi_lista)

# NameError: name 'mi_lista' is not defined

Eliminando todos los elementos de una lista clear()

Cuando eliminamos todos los elementos de una lista con clear(), esta lista sigue existiendo, pero vacía.

mi_lista = [1, 2, 3, 4]
mi_lista.clear()
print(mi_lista)

# []

En la documentación oficial sobre listas de Python puedes ver que existen algunos otros métodos para trabajar con las listas.

Recorriendo listas de Python

Recorrer lista con for

Para comprender bien cómo recorrer una lista, debes haber entendido bien el bucle for en Python. Puedes ver que se hace de forma muy sencilla recorriendo la lista por sus valores.

mi_lista = ['a', 'b', 'c', 'd', 'e']
for letra in mi_lista:
    print(letra, end=', ')

# a, b, c, d, e,

Existe la posibilidad de recorrer una lista a partir de la posición de los elementos. Para esto vamos a tener que utilizar los rangos y buscar el valor que contiene cada posición.

mi_lista = ['a', 'b', 'c', 'd', 'e']
for i in range(len(mi_lista)):
    print(f'Índice es i → {i} | Valor de {mi_lista[i]}')

# Índice es i → 0 | Valor de a
# Índice es i → 1 | Valor de b
# Índice es i → 2 | Valor de c
# Índice es i → 3 | Valor de d
# Índice es i → 4 | Valor de e

Recorrer lista con Comprehension

Podemos recorrer nuestra lista también mediante Comprehension e ir modificando de forma directa los valores en una lista nueva.

Para este ejemplo vamos a crear una nueva lista multiplicando cada uno de los valores de la lista antigua por dos.

mi_lista = [1, 2, 3, 4, 5]
nueva_lista = [valor*2 for valor in mi_lista]
print(nueva_lista)

# [2, 4, 6, 8, 10]

Otro ejemplo sería crear una lista nueva con los valores de la lista antigua que no son pares multiplicados por cinco.

mi_lista = [1, 2, 3, 4, 5]
nueva_lista = [valor*5 for valor in mi_lista if valor%2 != 0]
print(nueva_lista)

# [5, 15, 25]

Copiar una lista con Python

Por último, veamos la forma de copiar listas utilizando el método copy() para Python.

mi_lista = [1, 2, 3, 4, 5]
otra_lista = ['a', 'b', 'c', 'd', 'e']

nueva_lista = mi_lista + otra_lista
print(nueva_lista)

# [1, 2, 3, 4, 5]

Dejar un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *