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:
  1. Determinar o número de linhas e colunas da matriz original.
  2. Criar uma nova matriz com o número de linhas igual ao número de colunas da original, e vice-versa.
  3. 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.