Enviar um café pro programador

Matriz em Python: Lista dentro de Lista

Neste tutorial de nosso Curso de Python, vamos aprender o que são matrizes, para que servem, porque usamos, como criar uma matriz, que são listas dentro de listas.

Leia também:
  1. Apostila Python Progressivo (PDF)
  2. Certificado do curso (trabalhar e ganhar dinheiro com Python)

Lista dentro de Lista

Até o momento, em nossas listas, colocamos dados como números inteiros, float e strings.
Porém, é possível colocar também uma lista, dentro de uma lista.

A lista:
  • notas = [10, 9, 8]

Possui apenas três elementos, três inteiros. Uma linha e 3 colunas, ok ?

Agora vamos supor que temos três alunos, onde cada aluno possui 3 notas.
Podemos inicializar uma lista com as notas desses três alunos da seguinte maneira:

notas= [ [10, 9, 8],
              [9, 8, 7],
              [8, 10, 5] ]

Ou seja, temos 3 listas dentro de uma lista.
Temos 3 linhas e 3 colunas (tente ver como uma matriz de elementos, uma tabela).


Como acessar elementos de uma Matriz

As notas do primeiro aluno estão na lista notas[0]
As notas do segundo aluno estão na lista notas[1]
As notas do terceiro aluno estão na lista notas[2]

Para acessar a primeira nota do primeiro aluno: notas[0][0]
Para acessar a segunda nota do primeiro aluno: notas[0][1]
Para acessar a terceira nota do primeiro aluno : notas[0][2]
Para acessar a primeira nota do segundo aluno: notas[1][0]
Para acessar a segunda nota do segundo aluno: notas[1][1]
Para acessar a terceira nota do segundo aluno : notas[1][0]
Para acessar a primeira nota do terceiro aluno : notas[2][0]
Para acessar a segunda nota do terceiro aluno : notas[2][1]
Para acessar a terceira nota do terceiro aluno  : notas[2][2]

Para calcular a média das notas do primeiro aluno
(notas[0][0] + notas[0][1] +notas[0][2]) / 3

Para calcular a média das notas do segundo aluno
(notas[1][0] + notas[1][1] +notas[1][2]) / 3

Para calcular a média das notas do terceiro aluno
(notas[2][0] + notas[2][1] +notas[2][2]) / 3



Exercício de Matriz em Python

Crie uma matriz 4 x 4 (ou seja, 4 linhas e 4 colunas, ou seja, 4 listas dentro de uma lista maior).
Popule essa lista com números de 0, 1, 2, 3 etc

Como inicializar uma matriz

Usamos um laço for para inicializar uma matriz.

Por exemplo, para inicializar uma lista de 4 elementos, todos 0, fazemos:
  • [0 for i in range(4)]

Para inicializar uma matriz 4x4 então, basta repetirmos o código anterior dentro de outro for:
  • matriz = [ [0 for i in range(4)] for j in range(4)]

Inicializamos uma variável com valor 4.
Para percorrermos uma matriz, temos que usar laços aninhados, ou seja, for dentro de for.
O primeiro for percorre as linhas, o de dentro percorre as colunas.

Para mudarmos cada valor da matriz, a partir de 0, fazemos:


Como exibir uma matriz

Você pode imprimir uma matriz de nome matrix simplesmente fazendo: print(matrix)

Porém, o Python vai imprimir tudo numa mesma linha, muito feio.
Para exibirmos linha por linha, vamos novamente usar o laço for aninhado de outro for.

O primeiro for, de cima, vai primeiro começar na primeira linha.
O laço for aninhado, vai imprimir cada coluna, ou seja, cada elemento da linha.

Após terminar de imprimir a linha, ou seja, quando o laço for de dentro termina, damos um print() para dar uma quebra de linha quando terminamos de imprimir a linha.

Nosso código, então, fica:

matriz = [ [0 for i in range(4)] for j in range(4)]
count=0

for linha in range(4):
    for coluna in range(4):
        matriz[linha][coluna] = count
        count += 1

for linha in range(4):
    for coluna in range(4):
        print("%4d" % matriz[linha][coluna], end='')
    print()

Jogo em Python

Crie um jogo da velha em Python, usando uma matriz 3x3.
Você, usuário, que vai jogar, com os dois jogadores.

2 comentários:

  1. Grande mestre, só não entendi o motivo daquele "0" no inicio do "for i in range(4)" quando você está definindo a matriz e não identifiquei em que parte do texto explicar a utilidade dele já que quando aprendemos o "for" não vemos nenhum parâmetro indo antes dele. Poderia explicar por gentileza?

    ResponderExcluir
    Respostas
    1. no caso ele quis gerar uma matriz genérica preenchida apenas de 0. fora isso, não vejo outras funcionalidades

      Excluir