Regístrate para acceder a más de 15 cursos gratuitos de programación con un simulador

Listas anidadas 📋 Python: Listas

El valor de una lista puede ser cualquier cosa, incluyendo otra lista. Puedes crear una lista dentro de una lista de esta manera:

nested1 = [[3]]
print(len(nested1)) # => 1

nested2 = [1, [3, 2], [3, [4]]]
print(len(nested2)) # => 3

Cada elemento que es una lista se considera como una entidad única. Esto se puede ver por el tamaño de la segunda lista. La sintaxis de Python permite colocar los elementos de la lista que está siendo creada en líneas separadas. Reescribamos la creación de la segunda lista para que sea más claro:

arr2 = [
  1,        # primer elemento (número)
  [3, 2],   # segundo elemento (lista)
  [3, [4]], # tercer elemento (lista)
]
len(arr2) # 3

La anidación no tiene límites. Puedes crear una lista de listas con listas dentro y así sucesivamente.

El acceso a listas anidadas puede parecer un poco inusual, aunque es lógico:

arr1 = [[3]]
arr1[0][0] # 3

arr2 = [1, [3, 2], [3, [4]]]
arr2[2][1][0] # 4

Es posible que al principio no siempre veas claramente cómo llegar al elemento que necesitas, pero eso es sólo una cuestión de práctica:

arr2 = [
  1,
  [3, 2],
  [3, [4]],
]

arr2[2]       # [3, [4]]
arr2[2][1]    # [4]
arr2[2][1][0] # 4

Modificación y adición de listas a la lista:

arr1 = [[3]]
arr1[0] = [2, 10]
arr1.append([3, 4, 5])

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

Las listas anidadas se pueden modificar directamente simplemente accediendo al elemento requerido:

arr1 = [[3]]
arr1[0][0] = 5
# [[5]]

Lo mismo se aplica a la adición de un nuevo elemento:

arr1 = [[3]]
arr1[0].append(10)
# [[3, 10]]

Las listas anidadas son muy versátiles y se utilizan en diversas situaciones, desde conceptos matemáticos como matrices hasta la representación de campos de juego. Por ejemplo, en el juego de tres en linea, una lista anidada puede ser muy útil.

Imagina que tienes un campo de juego de tres en linea, que puedes representar como una lista de listas en la que cada sublista representa una fila del tablero. Para verificar si hay al menos una ❌ o una ⭕ en el campo, dependiendo de lo que necesites comprobar, puedes escribir una función que recorra este tablero y haga la comprobación.

# Inicializamos el campo
field = [
  [None, None, None],
  [None, None, None],
  [None, None, None],
]

# Hacemos una jugada:
field[1][2] = 'x'
# [
#     [None, None, None],
#     [None, None, 'x'],
#     [None, None, None],
# ]

Ahora implementamos la función que realiza la comprobación:

def has_player_move(field, symbol):
  # Recorremos el campo. Cada elemento es una fila en el campo de juego.
  for row in field:
    # El operador in verifica si el elemento está en la lista,
    if symbol in row: # Si está presente, significa que encontramos lo que estábamos buscando.
      return True
  # Si el campo ha sido revisado y nada encontrado,
  # significa que no hubo movimientos.
  return False

Revisemos:

has_player_move(field, 'x') # True
has_player_move(field, 'o') # False

Para acceder completo a curso necesitas un plan básico

El plan básico te dará acceso completo a todos los cursos, ejercicios y lecciones de Códica, proyectos y acceso de por vida a la teoría de las lecciones completadas. La suscripción se puede cancelar en cualquier momento.

Obtener acceso
130
cursos
1000
ejercicios
2000+
horas de teoría
3200
test

Obtén acceso

Cursos de programación para principiantes y desarrolladores experimentados. Comienza tu aprendizaje de forma gratuita

  • 130 cursos, 2000+ horas de teoría
  • 1000 ejercicios prácticos en el navegador
  • 360 000 estudiantes
Al enviar el formulario, aceptas el «Política de privacidad» y los términos de la «Oferta», y también aceptas los «Términos y condiciones de uso»

Nuestros graduados trabajan en empresas como:

Bookmate
Health Samurai
Dualboot
ABBYY