Matrizes
Uma matriz é uma estrutura de dados utilizada para representar informações organizadas em linhas e colunas.
Em Python, uma matriz pode ser representada utilizando uma lista de listas.
Por exemplo:
matriz = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
]Nesse caso, temos uma matriz com 3 linhas e 3 colunas.
Podemos visualizá-la da seguinte forma:
Colunas
0 1 2
┌───┬───┬───┐
Linha 0 │ 1 │ 2 │ 3 │
├───┼───┼───┤
Linha 1 │ 4 │ 5 │ 6 │
├───┼───┼───┤
Linha 2 │ 7 │ 8 │ 9 │
└───┴───┴───┘Cada linha da matriz é representada por uma lista.
Estrutura
Uma matriz é criada colocando listas dentro de outra lista:
matriz = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
]Podemos interpretar essa estrutura como:
matriz
├── linha 0 → [1, 2, 3]
├── linha 1 → [4, 5, 6]
└── linha 2 → [7, 8, 9]A lista externa representa as linhas, enquanto cada lista interna representa os elementos daquela linha.
Acesso aos elementos
Como uma matriz é uma lista de listas, precisamos utilizar dois índices para acessar um elemento.
O primeiro índice representa a linha e o segundo representa a coluna:
matriz = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
]
print(matriz[0][0])
print(matriz[1][2])
print(matriz[2][1])Resultado:
1
6
8Por exemplo:
matriz[1][2]pode ser interpretado como:
matriz[linha][coluna]
matriz[1][2]
↓ ↓
linha colunaPortanto, matriz[1][2] representa o elemento localizado na linha 1 e coluna 2.
Índices
Assim como acontece com listas, os índices começam em 0.
Para a matriz:
matriz = [
[10, 20, 30],
[40, 50, 60],
[70, 80, 90]
]Temos:
Coluna
0 1 2
┌────┬────┬────┐
Linha 0 │ 10 │ 20 │ 30 │
├────┼────┼────┤
Linha 1 │ 40 │ 50 │ 60 │
├────┼────┼────┤
Linha 2 │ 70 │ 80 │ 90 │
└────┴────┴────┘Assim:
print(matriz[0][1]) # 20
print(matriz[1][0]) # 40
print(matriz[2][2]) # 90Atualização de elementos
Os elementos de uma matriz podem ser modificados utilizando seus índices.
matriz = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
]
matriz[1][1] = 50
print(matriz)Resultado:
[[1, 2, 3], [4, 50, 6], [7, 8, 9]]Nesse caso, o elemento localizado na linha 1 e coluna 1 foi alterado.
Quantidade de linhas
Como a matriz é uma lista, podemos utilizar len() para descobrir a quantidade de linhas:
matriz = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
]
print(len(matriz))Resultado:
3Nesse caso, a matriz possui três linhas.
Quantidade de colunas
Para descobrir a quantidade de elementos de uma linha, também utilizamos len():
print(len(matriz[0]))Resultado:
3Portanto, essa matriz possui:
3 linhas
3 colunasPodemos obter essas informações:
linhas = len(matriz)
colunas = len(matriz[0])
print("Linhas:", linhas)
print("Colunas:", colunas)Percorrer uma matriz
Como uma matriz é formada por listas dentro de uma lista, podemos utilizar dois laços for para percorrer todos os seus elementos.
matriz = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
]
for linha in matriz:
for elemento in linha:
print(elemento)Resultado:
1
2
3
4
5
6
7
8
9O primeiro for percorre as linhas:
for linha in matriz:O segundo for percorre os elementos de cada linha:
for elemento in linha:Exibir uma matriz
Podemos utilizar um for para exibir cada linha da matriz:
matriz = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
]
for linha in matriz:
print(linha)Resultado:
[1, 2, 3]
[4, 5, 6]
[7, 8, 9]Se quisermos exibir apenas os valores, podemos utilizar dois laços:
for linha in matriz:
for elemento in linha:
print(elemento, end=" ")
print()Resultado:
1 2 3
4 5 6
7 8 9Percorrer utilizando índices
Também podemos percorrer uma matriz utilizando seus índices:
matriz = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
]
for i in range(len(matriz)):
for j in range(len(matriz[i])):
print(matriz[i][j])Nesse exemplo:
i → índice da linha
j → índice da colunaO acesso ao elemento é realizado por:
matriz[i][j]Quando não precisamos dos índices, percorrer diretamente as linhas e os elementos costuma deixar o código mais simples.
Adicionar uma linha
Como cada linha é uma lista, podemos utilizar append() para adicionar uma nova linha:
matriz = [
[1, 2, 3],
[4, 5, 6]
]
matriz.append([7, 8, 9])
print(matriz)Resultado:
[[1, 2, 3], [4, 5, 6], [7, 8, 9]]A nova lista foi adicionada como uma nova linha da matriz.
Adicionar um elemento a uma linha
Também podemos adicionar um elemento diretamente em uma linha:
matriz = [
[1, 2],
[3, 4]
]
matriz[0].append(5)
print(matriz)Resultado:
[[1, 2, 5], [3, 4]]Nesse caso, o 5 foi adicionado apenas à primeira linha.
É importante perceber que listas de listas não precisam necessariamente ter o mesmo tamanho:
matriz = [
[1, 2, 3],
[4, 5],
[6, 7, 8, 9]
]Essa estrutura continua sendo uma lista de listas, mas possui linhas com quantidades diferentes de elementos.
Remover uma linha
Podemos utilizar pop() para remover uma linha:
matriz = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
]
matriz.pop(1)
print(matriz)Resultado:
[[1, 2, 3], [7, 8, 9]]A linha de índice 1 foi removida.
Remover um elemento
Também podemos remover um elemento de uma determinada linha:
matriz = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
]
matriz[1].pop(1)
print(matriz)Resultado:
[[1, 2, 3], [4, 6], [7, 8, 9]]Nesse caso, o elemento da linha 1 e coluna 1 foi removido.
Exemplo com notas
Matrizes podem ser utilizadas para representar dados organizados em linhas e colunas.
Por exemplo, podemos representar as notas de estudantes:
notas = [
[8, 7, 9],
[6, 8, 7],
[10, 9, 8]
]Podemos interpretar:
Prova 1 Prova 2 Prova 3
Aluno 1 8 7 9
Aluno 2 6 8 7
Aluno 3 10 9 8Para acessar a nota do segundo aluno na terceira prova:
print(notas[1][2])Resultado:
7Exemplo completo
O exemplo abaixo demonstra algumas das principais operações realizadas com uma matriz:
matriz = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
]
print("Matriz:")
for linha in matriz:
print(linha)
print("\nElemento da linha 1, coluna 2:")
print(matriz[1][2])
matriz[0][0] = 10
print("\nApós atualização:")
for linha in matriz:
print(linha)
matriz.append([11, 12, 13])
print("\nApós adicionar uma linha:")
for linha in matriz:
print(linha)
matriz[1].pop(1)
print("\nApós remover um elemento:")
for linha in matriz:
print(linha)Conclusão
Em Python, uma matriz pode ser representada utilizando uma lista de listas.
Sua estrutura pode ser compreendida como:
lista externa
↓
┌───────────────┐
│ lista → linha │
│ lista → linha │
│ lista → linha │
└───────────────┘As principais características são:
- Cada linha é representada por uma lista.
- A matriz é representada por uma lista contendo essas listas.
- O primeiro índice representa a linha.
- O segundo índice representa a coluna.
- Os índices começam em
0. - Os elementos podem ser atualizados.
- Linhas e elementos podem ser adicionados ou removidos.
- Podemos percorrer a matriz utilizando laços
for. - As linhas podem possuir tamanhos diferentes, embora matrizes tradicionais normalmente utilizem linhas com a mesma quantidade de elementos.
Compreender listas de listas é fundamental para trabalhar com matrizes em Python e para representar dados organizados em linhas e colunas.