Listas 2D

Las listas en Python pueden contener diferentes tipos de elementos. Pueden tener enteros, cadenas de texto, números de punto flotante, etc. También pueden contener otras listas:
l = [4, 5, 'hi', 3.14, ['how', 'are', 'you', '?'], 64]
print(l[2])       # hi
print(l[2][0])    # h
print(l[-1])      # 64
print(l[4])       # ['how', 'are', 'you', '?']
inner = l[4]
print(inner[1])   # are
print(l[4][1])    # are
Este es un ejemplo de una lista en Python que contiene otra lista en su interior. Las operaciones con la lista anidada son exactamente las mismas que con la lista externa. Se pueden agregar elementos con append, o eliminarlos con pop, etc. Por lo tanto, el índice funciona como si estuviéramos accediendo a una lista anidada dentro de otra lista.
Similar a tener una lista de cadenas de texto, donde podemos acceder a cada elemento con [índice]:
greetings = [
    'hi',
    'hello',
    'hey there',
    'hey!'
]


print(greetings[0])
# hi
print(greetings[2])
# hey there
Incluso podemos manejar una matriz de números de esta manera:
multiplication_table = [
    [1, 2,  3,  4,  5,  6,  7,  8,  9],
    [2, 4,  6,  8,  10, 12, 14, 16, 18],
    [3, 6,  9,  12, 15, 18, 21, 24, 27],
    [4, 8,  12, 16, 20, 24, 28, 32, 36],
    [5, 10, 15, 20, 25, 30, 35, 40, 45],
    [6, 12, 18, 24, 30, 36, 42, 48, 54],
    [7, 14, 21, 28, 35, 42, 49, 56, 63],
    [8, 16, 24, 32, 40, 48, 56, 64, 72],
    [9, 18, 27, 36, 45, 54, 63, 72, 81]
]

print(multiplication_table[0])
# [1, 2, 3, 4, 5, 6, 7, 8, 9]
print(multiplication_table[2])
# [3, 6, 9, 12, 15, 18, 21, 24, 27]
De esta manera, accedemos a cada fila por separado. Después, podemos acceder a cada elemento de la fila exactamente como lo haríamos con un elemento de una lista:
print(multiplication_table[2])     # [3, 6, 9, 12, 15, 18, 21, 24, 27]

l = multiplication_table[2]        # l ahora es [3, 6, 9, 12, 15, 18, 21, 24, 27]
print(l[0])                        # 3
print(l[1])                        # 6
print(l[-1])                       # 27

# O acceder a los elementos directamente
print(multiplication_table[2][0])  # 3
print(multiplication_table[2][1])  # 6
print(multiplication_table[2][-1]) # 27
El primer índice indica la "fila" que seleccionamos de la matriz, mientras que el segundo índice indica la "columna". Por lo tanto, la sintaxis para acceder a un elemento de una lista 2D es two_d[row][column].

Desafío

Dado un entero n, crea una lista 2D cuadrada de tamaño . Se te pide dividir el cuadrado en 3 partes: la que está por encima de su diagonal, la que está en la diagonal y la que está por debajo.
Los campos por encima deben rellenarse con 0, los campos en la diagonal deben rellenarse con 1, y los que están debajo con 2.
La entrada del programa contiene un solo entero n - el tamaño del cuadrado.
La salida del programa debe contener el cuadrado pintado.
Entrada
Salida
4
1 0 0 0 2 1 0 0 2 2 1 0 2 2 2 1
 

Constraints

Time limit: 2 seconds

Memory limit: 512 MB

Output limit: 1 MB

To check your solution you need to sign in
Sign in to continue