Estructuras de datos
Una lista guarda varios valores ordenados y se puede modificar. Se crea con [] y se accede por índice (desde 0); -1 es el último:
nums = [10, 20, 30]
nums[0] # 10
nums[-1] # 30
nums.append(40) # añade al final
El slicing toma un tramo: nums[1:3] son los elementos de los índices 1 y 2. Métodos que modifican la lista: .append(x) añade al final, .remove(x) quita un elemento y .sort() la ordena (len(lista) solo la cuenta, no la modifica).
Una tupla es como una lista pero inmutable (no cambia): punto = (3, 4).
Un diccionario guarda pares clave-valor y se accede por la clave:
edades = {"Ana": 25}
edades["Ana"] # 25
edades["Leo"] = 30 # añade una clave
Acceder a una clave que no existe con d[clave] lanza un KeyError; d.get(clave) es seguro y devuelve None si no está. Para recorrer sus pares usa .items():
for clave, valor in edades.items():
print(clave, valor)
Un set es una colección sin duplicados y sin orden garantizado.