As listas em Python podem conter diferentes tipos de elementos. Podem ter inteiros, strings, números de ponto flutuante, etc. Elas também podem conter outras 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 é um exemplo de uma lista em Python que contém outra lista dentro dela. As operações com a lista aninhada são exatamente as mesmas que com a lista externa. Pode-se adicionar elementos com append, ou removê-los com pop, etc. Portanto, a indexação funciona como se estivéssemos acessando uma lista dentro de outra.
Semelhante a ter uma lista de strings, onde podemos acessar cada elemento com [índice]:
greetings = [
'hi',
'hello',
'hey there',
'hey!'
]
print(greetings[0])
# hi
print(greetings[2])
# hey there
Podemos até mesmo manter uma matriz de números desta forma:
Desta forma, acessamos cada linha separadamente. Depois disso, podemos acessar cada elemento da linha exatamente como faríamos com um elemento de uma lista:
print(multiplication_table[2]) # [3, 6, 9, 12, 15, 18, 21, 24, 27]
l = multiplication_table[2] # l agora é [3, 6, 9, 12, 15, 18, 21, 24, 27]
print(l[0]) # 3
print(l[1]) # 6
print(l[-1]) # 27
# Ou acesse os elementos diretamente
print(multiplication_table[2][0]) # 3
print(multiplication_table[2][1]) # 6
print(multiplication_table[2][-1]) # 27
O primeiro índice indica a "linha" que escolhemos da matriz, enquanto o segundo índice indica a "coluna". Assim, a sintaxe para acessar um elemento de uma lista 2D é two_d[linha][coluna].
Desafio
Dado um inteiro n, crie uma lista quadrada 2D de tamanho $$n \times n$$. Você deve dividir o quadrado em 3 partes: a que está acima da sua diagonal, a que está na diagonal e a que está abaixo dela.
Os campos acima devem ser preenchidos com 0, os campos na diagonal devem ser preenchidos com 1, e os que estão abaixo devem ser 2.
A entrada do programa contém um único inteiro n - o tamanho do quadrado.
A saída do programa deve conter o quadrado preenchido.