Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Criando e preenchendo uma matriz 2 x3. Há alguma forma melhor de fazer?

from random import randint
linhas=[]
matriz =[]
for i in range(2):
    for j in range(3):
        #a = randint(1,1000)
        a = int(input(f"Digite o valor da linha {i}: coluna {j}: "))
        #print(f"linha {i}: coluna {j}: {a}")
        linhas.extend([a])

    matriz.append(linhas)
    linhas = []


print()
#print(matriz)
for linha in matriz:
    print(linha, end="\n")

O código acima está funcionado mas gostaria de saber se há uma maneira mais elegante e/ ou eficiente de gerar a matriz!

2 respostas
solução!

Oi Edson, tudo bem?

Uma maneira elegante e eficiente de fazer esta matriz é utilizando a biblioteca NumPy, que é bastante conhecida por sua eficiência em trabalhar com arrays multidimensionais. Primeiro, é necessário instalá-la:

pip3 install numpy

E para criar uma matriz com ela é bem simples:

matriz = np.array(valores_matriz).reshape(linhas, colunas)

Onde, o reshape é responsável por transformar o array em matriz e dar a forma usual como a vemos no mundo real, por exemplo:

[2, 3]
[4, 5]
[6, 7]

Bem simples, não é?!

Deixo abaixo um exemplo funcional, clique em run:

E para acessar os valores desta matriz, basta acessarmos diretamente, então, se queremos obter o valor da linha 0 e coluna 2, basta fazermos:

print(matriz[0][2])

E não se preocupe, você poderia pegar as entradas do usuário sem problema algum, armazená-los em uma lista e passar para o método np.array. Tudo bem?!

import numpy as np 

linhas = 2
colunas = 3

valores_matriz = []

for i in range(linhas):
    for j in range(colunas):
        a = int(input(f"Digite o valor da linha {i} e coluna {j}: "))
        valores_matriz.append(a)

matriz = np.array(valores_matriz).reshape(linhas, colunas)
print(matriz) 


print(f'Elemento da linha 0 e coluna 2: {matriz[0][2]}') 

Por fim, deixo o link deste post sobre arrays multidimensionais com numpy que pode te interessar.

Espero que tenha te ajudado e se ficou alguma dúvida, fique a vontade, estou a disposição. Abraços e bons estudos!

Resposta acima