Crie a função mat_transposta(matriz). A função deve receber uma matriz genérica bidimensional, de qualquer tamanho (não necessariamente quadrada) e retornar a matriz transposta, sem alterar a matriz original.
Passo 1
Beleza, vamos lá! O enunciado pede para criar uma função chamada
mat_transposta
que recebe uma matriz bidimensional qualquer e retorna a matriz transposta dela, sem mexer na original. Isso envolve entender o conceito de transposição de matrizes, que é quando você troca as linhas pelas colunas. Para resolver isso, vamos precisar iterar sobre os elementos da matriz original e reorganizá-los na nova matriz transposta.Passo 2
Primeiro, vamos entender como uma matriz é representada em Python. Geralmente, usamos listas dentro de listas, onde cada lista interna representa uma linha da matriz. Por exemplo:
matriz = [
[1, 2, 3],
[4, 5, 6]
]
Aqui, temos uma matriz de 2 linhas e 3 colunas.
Passo 3
Para transpor essa matriz, queremos que as linhas se tornem colunas e as colunas se tornem linhas. Ou seja, a matriz transposta será:
transposta = [
[1, 4],
[2, 5],
[3, 6]
]
Agora temos uma matriz de 3 linhas e 2 colunas.
Passo 4
Vamos pensar em como implementar isso. Precisamos:
- Determinar o número de linhas e colunas da matriz original.
- Criar uma nova matriz com o número de linhas igual ao número de colunas da original, e vice-versa.
- Preencher a nova matriz com os elementos transpostos.
Passo 5
Em Python, podemos usar a função
len()
para obter o número de linhas e colunas:num_linhas = len(matriz)
num_colunas = len(matriz[0])
Aqui,
num_linhas
é o número de listas internas (linhas) e num_colunas
é o número de elementos em cada lista (colunas).Passo 6
Agora, vamos criar uma matriz vazia para a transposta. Podemos usar uma compreensão de listas para isso:
transposta = []
for j in range(num_colunas):
nova_linha = []
for i in range(num_linhas):
nova_linha.append(matriz[i][j])
transposta.append(nova_linha)
Aqui, para cada coluna
j
da matriz original, criamos uma nova linha na transposta com os elementos correspondentes de cada linha i
.Passo 7
Mas para deixar o código mais enxuto, podemos usar list comprehensions do Python:
transposta = [[matriz[i][j] for i in range(num_linhas)] for j in range(num_colunas)]
Isso realiza o mesmo processo de forma mais compacta.
Passo 8
Por fim, vamos colocar tudo isso dentro da função
mat_transposta
:def mat_transposta(matriz):
num_linhas = len(matriz)
num_colunas = len(matriz[0])
transposta = [[matriz[i][j] for i in range(num_linhas)] for j in range(num_colunas)]
return transposta
Resposta
Pronto! A função
mat_transposta
recebe qualquer matriz bidimensional e retorna a sua transposta sem alterar a original. Por exemplo:matriz = [
[1, 2, 3],
[4, 5, 6]
]
transposta = mat_transposta(matriz)
print(transposta)
Isso vai imprimir:
[[1, 4], [2, 5], [3, 6]]
Exercícios relacionados
Leia um vetor de 16 posições e troque as 8 primeiras posições pelas 8 últimas posições. Imprima o vetor original e o vetor trocado.
Leia uma frase e imprima o total de vogais, o total de brancos e o total do resto.
Crie a função multiplica_matriz(mat1, mat2) que deve retornar o produto de duas matrizes bidimensionais genéricas, sem alterar as matrizes originais. A função deve imprimir uma mensagem de erro e retornar um vetor vazio ([]) caso não for possível realizar o produto das duas matrizes.
Crie um algoritmo que leia um número N e verifique se ele é primo. O seu programa deve fazer o MíNIMO de interações possíveis.