5  Listas

Una lista en Python es una colección ordenada de elementos que puede contener elementos de diferentes tipos (enteros, flotantes, cadenas, etc.). Las listas son mutables, lo que significa que sus elementos se pueden cambiar después de que se ha creado la lista.

Para crear una lista utilizamos los corchetes []

# Creación de listas
lista_vacia = []
lista_numeros = [1, 2, 3, 4, 5]
lista_mixta = [1, "dos", 3.0, True]
print(type(lista_mixta))
<class 'list'>
print(
  "La cantidad de elementos que existen 'lista_mixta' son: ", 
  len(lista_mixta)
)
La cantidad de elementos que existen 'lista_mixta' son:  4
# Acceder a elementos
print("Primer elemento:", lista_mixta[0])
print("Último elemento:", lista_mixta[-1])
Primer elemento: 1
Último elemento: True
print(lista_mixta[1:3]) 
['dos', 3.0]

5.1 Métodos para listas

append(item)

Añade un elemento item al final de la lista.

lista = [1, 2, 3]
lista.append(["a", "b", "c"])
print(lista)  # [1, 2, 3, 4]
[1, 2, 3, ['a', 'b', 'c']]

insert(index, item)

Inserta item en la posición index, desplazando el resto a la derecha.

lista = ['a', 'b', 'd']
lista.insert(2, 'c')
print(lista)  # ['a', 'b', 'c', 'd']
['a', 'b', 'c', 'd']

remove(item)

Elimina la primera aparición de item en la lista. Lanza ValueError si no existe.

lista = [1, 2, 3, 2]
lista.remove(2)
print(lista)  # [1, 3, 2]
[1, 3, 2]

clear()

Elimina todos los elementos de la lista, dejándola vacía.

lista = [1, 2, 3]
lista.clear()
print(lista)  # []
[]

count(item)

Cuenta cuántas veces aparece item en la lista.

lista = [1, 2, 2, 2, 3]
print("El valor 2 se repite ", lista.count(2), " veces en la lista")  # 3
El valor 2 se repite  3  veces en la lista

sort(key=None, reverse=False)

Ordena la lista in place.

  • key: función para extraer el valor de comparación.
  • reverse=True: orden descendente.
lista = [3, 1, 2]
lista.sort()
print(lista)  # [1, 2, 3]

lista = ['b', 'aa', 'ccc']
lista.sort(key=len, reverse=True)
print(lista)  # ['ccc', 'aa', 'b']
[1, 2, 3]
['ccc', 'aa', 'b']

reverse()

Invierte el orden de los elementos in place.

lista = [1, 2, 3]
lista.reverse()
print(lista)  # [3, 2, 1]
[3, 2, 1]

5.2 Copiar una lista

Note

Cuando asignamos una lista a una nueva variable, por ejemplo, B = A, no estamos creando una copia independiente. Ambas variables apuntan al mismo espacio de memoria. Así, cualquier cambio en A se reflejará en B.

# Crear lista
ls_a = [1, 2, 3, 4, 5]

# Copiar lista
ls_b = ls_a

print("El id de la lista a es: ", id(ls_a))
print("El id de la lista b es: ", id(ls_b))
El id de la lista a es:  4421662272
El id de la lista b es:  4421662272

Como podemos ver, son iguales, pues apuntan la mismo lugar en memoria. Entonces, ¿cómo evitamos esto?

Uitlizando el método slicing.

# Crear lista c
ls_c = ls_a[:]

print("El id de la lista a es: ", id(ls_a))
print("El id de la lista b es: ", id(ls_c))
El id de la lista a es:  4421662272
El id de la lista b es:  4421663232

Como vemos, son ids diferentes.