Listas de Python

Las listas son uno de los 4 tipos de datos en Python que se utilizan para almacenar colecciones de datos.

# List: colección ordenada de elementos encerrados entre corchetes
['John', 'Peter', 'Debora', 'Charles']

Obtener valores con índices

# Acceder a elementos de la lista usando el índice (base 0, el primer elemento es el índice 0)
furniture = ['table', 'chair', 'rack', 'shelf']

furniture[0]  # Devuelve el primer elemento: 'table'
'table'
furniture[1]
'chair'
furniture[2]
'rack'
furniture[3]
'shelf'

Índices negativos

# Índice negativo: acceder a elementos desde el final de la lista
furniture = ['table', 'chair', 'rack', 'shelf']

furniture[-1]  # Devuelve el último elemento: 'shelf'
'shelf'
furniture[-3]
'chair'
f'The {furniture[-1]} is bigger than the {furniture[-3]}'
'The shelf is bigger than the chair'
Quiz

Inicia sesión para responder este quiz y rastrear tu progreso de aprendizaje

¿Qué devuelve furniture[-1] si furniture = ['table', 'chair', 'rack', 'shelf']?
A. 'table'
B. 'shelf'
C. ['shelf']
D. IndexError

Obtener sublistas con Slices

# Slicing: obtener sublista usando la sintaxis [inicio:fin] (el fin es exclusivo)
furniture = ['table', 'chair', 'rack', 'shelf']

furniture[0:4]  # Devuelve los elementos desde el índice 0 hasta el 3 (el 4 excluido)
['table', 'chair', 'rack', 'shelf']
furniture[1:3]
['chair', 'rack']
furniture[0:-1]
['table', 'chair', 'rack']
# Slice desde el principio: omitir el índice de inicio (por defecto es 0)
furniture[:2]  # Devuelve los dos primeros elementos
['table', 'chair']
# Slice hasta el final: omitir el índice final (por defecto es el final de la lista)
furniture[1:]  # Devuelve todos los elementos desde el índice 1 hasta el final
['chair', 'rack', 'shelf']
furniture[:]
['table', 'chair', 'rack', 'shelf']

Dividir la lista completa realizará una copia:

# El slicing crea una copia: [:] crea una copia superficial de la lista
spam = ['cat', 'bat', 'rat', 'elephant']
spam2 = spam[:]  # Crea una copia, no una referencia
spam2
['cat', 'bat', 'rat', 'elephant']
spam.append('dog')
spam
['cat', 'bat', 'rat', 'elephant', 'dog']
spam2
['cat', 'bat', 'rat', 'elephant']
Quiz

Inicia sesión para responder este quiz y rastrear tu progreso de aprendizaje

¿Qué crea spam[:] cuando spam es una lista?
A. Una referencia a la misma lista
B. Una lista vacía
C. Una copia superficial de la lista
D. Una lista invertida

Obtener la longitud de una lista con len()

# len() devuelve el número de elementos en una lista
furniture = ['table', 'chair', 'rack', 'shelf']
len(furniture)  # Devuelve 4
4

Cambiar valores con índices

# Modificar elementos de la lista asignando nuevos valores a los índices
furniture = ['table', 'chair', 'rack', 'shelf']

furniture[0] = 'desk'  # Reemplazar el primer elemento
furniture
['desk', 'chair', 'rack', 'shelf']
furniture[2] = furniture[1]
furniture
['desk', 'chair', 'chair', 'shelf']
furniture[-1] = 'bed'
furniture
['desk', 'chair', 'chair', 'bed']

Concatenación y Replicación

# Concatenación de listas: combinar dos listas usando el operador +
[1, 2, 3] + ['A', 'B', 'C']  # Devuelve [1, 2, 3, 'A', 'B', 'C']
[1, 2, 3, 'A', 'B', 'C']
# Replicación de listas: repetir la lista varias veces usando el operador *
['X', 'Y', 'Z'] * 3  # Devuelve ['X', 'Y', 'Z', 'X', 'Y', 'Z', 'X', 'Y', 'Z']
['X', 'Y', 'Z', 'X', 'Y', 'Z', 'X', 'Y', 'Z']
my_list = [1, 2, 3]
my_list = my_list + ['A', 'B', 'C']
my_list
[1, 2, 3, 'A', 'B', 'C']

Uso de bucles for con Listas

# Iterar sobre los elementos de la lista usando un bucle for
furniture = ['table', 'chair', 'rack', 'shelf']

for item in furniture:  # Bucle a través de cada elemento
    print(item)
table
chair
rack
shelf

Obtener el índice en un bucle con enumerate()

# enumerate() devuelve tanto el índice como el valor en un bucle
furniture = ['table', 'chair', 'rack', 'shelf']

for index, item in enumerate(furniture):  # Obtener índice y elemento juntos
    print(f'index: {index} - item: {item}')
index: 0 - item: table
index: 1 - item: chair
index: 2 - item: rack
index: 3 - item: shelf

Bucle en Múltiples Listas con zip()

# zip() combina múltiples listas elemento por elemento en un bucle
furniture = ['table', 'chair', 'rack', 'shelf']
price = [100, 50, 80, 40]

for item, amount in zip(furniture, price):  # Emparejar elementos de ambas listas
    print(f'The {item} costs ${amount}')
The table costs $100
The chair costs $50
The rack costs $80
The shelf costs $40

Los operadores in y not in

# Operador in: comprobar si un elemento existe en una lista
'rack' in ['table', 'chair', 'rack', 'shelf']  # Devuelve True
True
'bed' in ['table', 'chair', 'rack', 'shelf']
False
furniture = ['table', 'chair', 'rack', 'shelf']
'bed' not in furniture
True
'rack' not in furniture
False

El truco de la asignación múltiple

El truco de la asignación múltiple es un atajo que le permite asignar múltiples variables con los valores de una lista en una sola línea de código. Así que en lugar de hacer esto:

furniture = ['table', 'chair', 'rack', 'shelf']
table = furniture[0]
chair = furniture[1]
rack = furniture[2]
shelf = furniture[3]

Podrías escribir esta línea de código:

furniture = ['table', 'chair', 'rack', 'shelf']
table, chair, rack, shelf = furniture

table
'table'
chair
'chair'
rack
'rack'
shelf
'shelf'

El truco de la asignación múltiple también se puede utilizar para intercambiar los valores en dos variables:

a, b = 'table', 'chair'
a, b = b, a
print(a)
chair
print(b)
table

El método index

El método index le permite encontrar el índice de un valor pasando su nombre:

furniture = ['table', 'chair', 'rack', 'shelf']
furniture.index('chair')
1

Añadir Valores

append()

append añade un elemento al final de una list:

furniture = ['table', 'chair', 'rack', 'shelf']
furniture.append('bed')
furniture
['table', 'chair', 'rack', 'shelf', 'bed']
Quiz

Inicia sesión para responder este quiz y rastrear tu progreso de aprendizaje

¿Qué hace el método append() a una lista?
A. Añade un elemento al final de la lista
B. Añade un elemento al principio de la lista
C. Reemplaza el último elemento
D. Elimina el último elemento

insert()

insert añade un elemento a una list en una posición dada:

furniture = ['table', 'chair', 'rack', 'shelf']
furniture.insert(1, 'bed')
furniture
['table', 'bed', 'chair', 'rack', 'shelf']

Eliminar Valores

del

del elimina un elemento usando el índice:

furniture = ['table', 'chair', 'rack', 'shelf']
del furniture[2]
furniture
['table', 'chair', 'shelf']
del furniture[2]
furniture
['table', 'chair']

remove()

remove elimina un elemento usando su valor real:

furniture = ['table', 'chair', 'rack', 'shelf']
furniture.remove('chair')
furniture
['table', 'rack', 'shelf']

Eliminación de elementos repetidos

Si el valor aparece varias veces en la lista, solo se eliminará la primera instancia del valor.

pop()

Por defecto, pop eliminará y devolverá el último elemento de la lista. También puedes pasar el índice del elemento como parámetro opcional:

animals = ['cat', 'bat', 'rat', 'elephant']

animals.pop()
'elephant'
animals
['cat', 'bat', 'rat']
animals.pop(0)
'cat'
animals
['bat', 'rat']
Quiz

Inicia sesión para responder este quiz y rastrear tu progreso de aprendizaje

¿Qué hace pop() cuando se llama en una lista?
A. Solo elimina el último elemento
B. Elimina y devuelve un elemento (el último por defecto, o el índice especificado)
C. Solo devuelve el último elemento sin eliminarlo
D. Elimina todos los elementos de la lista

Ordenar valores con sort()

numbers = [2, 5, 3.14, 1, -7]
numbers.sort()
numbers
[-7, 1, 2, 3.14, 5]
furniture = ['table', 'chair', 'rack', 'shelf']
furniture.sort()
furniture
['chair', 'rack', 'shelf', 'table']

También puedes pasar True para el argumento de palabra clave reverse para que sort() ordene los valores en orden inverso:

furniture.sort(reverse=True)
furniture
['table', 'shelf', 'rack', 'chair']

Si necesitas ordenar los valores en orden alfabético normal, pasa str.lower para el argumento de palabra clave key en la llamada al método sort():

letters = ['a', 'z', 'A', 'Z']
letters.sort(key=str.lower)
letters
['a', 'A', 'z', 'Z']

Puedes usar la función incorporada sorted para devolver una nueva lista:

furniture = ['table', 'chair', 'rack', 'shelf']
sorted(furniture)
['chair', 'rack', 'shelf', 'table']

El tipo de dato Tuple

Tuplas vs Listas

La diferencia clave entre tuplas y listas es que, mientras que las tuples son objetos inmutables, las lists son mutables. Esto significa que las tuplas no se pueden cambiar mientras que las listas sí se pueden modificar. Las tuplas son más eficientes en memoria que las listas.

furniture = ('table', 'chair', 'rack', 'shelf')

furniture[0]
'table'
furniture[1:3]
('chair', 'rack')
len(furniture)
4

La principal forma en que las tuplas difieren de las listas es que las tuplas, al igual que las cadenas, son inmutables.

Conversión entre list() y tuple()

tuple(['cat', 'dog', 5])
('cat', 'dog', 5)
list(('cat', 'dog', 5))
['cat', 'dog', 5]
list('hello')
['h', 'e', 'l', 'l', 'o']
Quiz

Inicia sesión para responder este quiz y rastrear tu progreso de aprendizaje

¿Cuál es la principal diferencia entre listas y tuplas en Python?
A. Las listas solo pueden contener números, las tuplas pueden contener cualquier cosa
B. Las tuplas son más rápidas de crear
C. Las listas son mutables (se pueden cambiar), las tuplas son inmutables (no se pueden cambiar)
D. Las listas usan corchetes cuadrados, las tuplas usan llaves

Enlaces relevantes