As listas em Python podem conter diferentes tipos de elementos. Elas 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. Podemos adicionar elementos com append, ou removê-los com pop, etc. Portanto, a indexação funciona como se estivéssemos acessando uma lista aninhada dentro de uma lista.
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é manter uma matriz de números desta forma:
Dessa forma, acessamos cada linha separadamente. Depois disso, podemos acessar cada elemento da linha exatamente como acessaríamos 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”. Portanto, a sintaxe para acessar um elemento de uma lista 2D é two_d[row][column].
Desafio
Dado um inteiro n, crie uma lista 2D quadrada de tamanho . Você é solicitado a dividir o quadrado em 3 partes: a acima da diagonal, a na diagonal e a abaixo dela.
Os campos acima da diagonal devem ser preenchidos com 0, os campos na diagonal com 1, e os abaixo com 2.
A entrada do programa consiste em um único inteiro n - o tamanho do quadrado.
A saída do programa deve conter o quadrado preenchido.