Baixe o app para aproveitar ainda mais
Prévia do material em texto
Aula 15 – Estrutura de Dados continuação Computação I - aula 9 - 2012/2 2 Listas - Matrizes Podemos usar listas para armazenar e manipular matrizes. ExemploExemplo 2 -3 4 0 7 5 [ [2,-3,4] , [0, 7,5] ] MATRIZ = [ [2, -3, 4],[0, 7, 5] ] for i in range(2): for j in range (3): print MATRIZ[i][j], print MATRIZ [0] [0] = 2 MATRIZ [1] [0] = 0 MATRIZ [0] [1] = -3 MATRIZ [1] [1] = 7 MATRIZ [0] [2] = 4 MATRIZ [1] [2] = 5 0 1 0 1 2 MATRIZ [linha] [coluna]MATRIZ [linha] [coluna] Computação I - aula 9 - 2012/2 3 Listas - Matrizes Exercício:Exercício: Construa uma matriz 4x3 com valores iguais a zero. Imprima a matriz. Computação I - aula 9 - 2012/2 4 Listas - Matrizes Exercício:Exercício: Construa uma matriz 4x3 com valores iguais a zero. Imprima a matriz. def main(): matriz = [] for i in range(4): linha = [] for i in range(3): linha.append(0) matriz = matriz+[linha] for i in range(4): for j in range (3): print matriz[i][j], print if __name__ == "__main__": main() def main(): matriz = [] for i in range(4): matriz.append([0]*3) for i in range(4): for j in range (3): print matriz[i][j], print if __name__ == "__main__": main() ATENÇÃO: estes programas são equivalentes?ATENÇÃO: estes programas são equivalentes? Prog. 1Prog. 1 Prog. 2Prog. 2 Computação I - aula 9 - 2012/2 5 Listas - Matrizes Exercício:Exercício: Construa uma matriz 4x3 com valores iguais a zero. Imprima a matriz. def main(): matriz = [] for i in range(4): linha = [] for i in range(3): linha.append(0) matriz = matriz+[linha] for i in range(4): for j in range (3): print matriz[i][j], print if __name__ == "__main__": main() def main(): matriz = [] for i in range(4): matriz.append([0]*3) for i in range(4): for j in range (3): print matriz[i][j], print if __name__ == "__main__": main() Prog. 1Prog. 1 Prog. 2Prog. 2 Podemos simplificar a inicializaçãoPodemos simplificar a inicialização destas matrizes usando [ … for ...] ?destas matrizes usando [ … for ...] ? Computação I - aula 9 - 2012/2 6 Listas - Matrizes Exercício:Exercício: Construa uma matriz 4x3 com valores iguais a zero. Imprima a matriz. def main(): matriz=[[0 for j in range(3)] for i in range(4)] for i in range(4): for j in range (3): print matriz[i][j], print if __name__ == "__main__": main() Podemos simplificar a inicializaçãoPodemos simplificar a inicialização destas matrizes usando [ … for ...] ?destas matrizes usando [ … for ...] ? Computação I - aula 9 - 2012/2 7 Listas - Matrizes Exercício:Exercício: Faça um programa que permita ao usuário construir uma matriz de inteiros N x M. Imprima a matriz que foi fornecida. Computação I - aula 9 - 2012/2 8 Listas - Matrizes def main(): matriz = [] N = input("Número de linhas: ") M = input("Número de colunas: ") #inicializando matriz matriz=[[0 for j in range(M)] for i in range(N)] #Preenchendo matriz for i in range(N): for j in range (M): mensagem="Entre com o elemento da linha "+ str(i+1)+" e coluna "+str(j+1)+" : " matriz[i][j]= input(mensagem) #Imprimindo matriz for i in range(4): for j in range (3): print matriz[i][j], print if __name__ == "__main__": main() ATENÇÃO: ATENÇÃO: TESTE ESTE TESTE ESTE PROGRAMAPROGRAMA Exercício:Exercício: Faça um programa que permita ao usuário construir uma matriz de inteiros N x M. Imprima a matriz que foi fornecida. Computação I - aula 9 - 2012/2 9 Listas - Matrizes def main(): matriz = [] N = int(input("Número de linhas: ")) M = int(input("Número de colunas: ")) #inicializando matriz – Prog. 2 – slide 4 for i in range(N): matriz.append([0]*M) #Preenchendo matriz for i in range(N): for j in range (M): mensagem="Entre com o elemento da linha "+ str(i+1)+" e coluna "+str(j+1)+" : " matriz[i][j]= input(mensagem) #Imprimindo matriz for i in range(4): for j in range (3): print matriz[i][j], print if __name__ == "__main__": main() ATENÇÃO: ATENÇÃO: TESTE ESTE TESTE ESTE PROGRAMAPROGRAMA Exercício:Exercício: Faça um programa que permita ao usuário construir uma matriz de inteiros N x M. Imprima a matriz que foi fornecida. Computação I - aula 9 - 2012/2 10 Listas - Matrizes def main(): matriz = [] N = input("Número de linhas: ") M = input("Número de colunas: ") #inicializando matriz – Prog. – slide 6 matriz=[[0 for j in range(M)] for i in range(N)] #Preenchendo matriz for i in range(N): for j in range (M): mensagem="Entre com o elemento da linha "+ str(i+1)+" e coluna "+str(j+1)+" : " matriz[i][j]= input(mensagem) #Imprimindo matriz for i in range(4): for j in range (3): print matriz[i][j], print if __name__ == "__main__": main() ATENÇÃO: ATENÇÃO: TESTE ESTE TESTE ESTE PROGRAMAPROGRAMA Podemos usar esta inicializaçãoPodemos usar esta inicialização para outros programas?para outros programas? Exercício:Exercício: Faça um programa que permita ao usuário construir uma matriz de inteiros N x M. Imprima a matriz que foi fornecida. Computação I - aula 9 - 2012/2 11 Listas - Matrizes def iniciaMatriz(linha,coluna): return [[0 for j in range(coluna)] for i in range(linha)] def main(): matriz = [] N = input("Número de linhas: ") M = input("Número de colunas: ") matriz = iniciaMatriz(N,M) #Preenchendo matriz for i in range(N): for j in range (M): mensagem="Entre com o elemento da linha "+ str(i+1)+" e coluna "+str(j+1)+" : " matriz[i][j]= input(mensagem) #Imprimindo matriz for i in range(4): for j in range (3): print matriz[i][j], print if __name__ == "__main__": main() Sim, definimos uma função.Sim, definimos uma função. Exercício:Exercício: Faça um programa que permita ao usuário construir uma matriz de inteiros N x M. Imprima a matriz que foi fornecida. Computação I - aula 9 - 2012/2 12 Listas - Matrizes def iniciaMatriz(linha,coluna): return [[0 for j in range(coluna)] for i in range(linha)] def main(): matriz = [] N = input("Número de linhas: ") M = input("Número de colunas: ") matriz = iniciaMatriz(N,M) #Preenchendo matriz for i in range(N): for j in range (M): mensagem="Entre com o elemento da linha "+ str(i+1)+" e coluna "+str(j+1)+" : " matriz[i][j]= input(mensagem) #Imprimindo matriz for i in range(4): for j in range (3): print matriz[i][j], print if __name__ == "__main__": main() Sim, definimos uma função.Sim, definimos uma função. Exercício:Exercício: Faça um programa que permita ao usuário construir uma matriz de inteiros N x M. Imprima a matriz que foi fornecida. Podemos aproveitar a entradaPodemos aproveitar a entrada de valores para outros programas?de valores para outros programas? Computação I - aula 9 - 2012/2 13 Listas - Matrizes def iniciaMatriz(linha,coluna): return [[0 for j in range(coluna)] for i in range(linha)] def leMatriz(matriz,linha,coluna): for i in range(linha): for j in range(coluna): mensagem="Entre com o elemento da linha "+ str(i+1)+" e coluna "+str(j+1)+" : " matriz[i][j]= input(mensagem) return matriz defmain(): matriz = [] N = input("Número de linhas: ") M = input("Número de colunas: ") matriz = iniciaMatriz(N,M) matriz = leMatriz(matriz,N,M) #Imprimindo matriz for i in range(N): for j in range (M): print matriz[i][j], print if __name__ == "__main__": main() Sim, definimos uma função.Sim, definimos uma função. Exercício:Exercício: Faça um programa que permita ao usuário construir uma matriz de inteiros N x M. Imprima a matriz que foi fornecida. Computação I - aula 9 - 2012/2 14 Listas - Matrizes def iniciaMatriz(linha,coluna): return [[0 for j in range(coluna)] for i in range(linha)] def leMatriz(matriz,linha,coluna): for i in range(linha): for j in range(coluna): mensagem="Entre com o elemento da linha "+ str(i+1)+" e coluna "+str(j+1)+" : " matriz[i][j]= input(mensagem) return matriz def main(): matriz = [] N = input("Número de linhas: ") M = input("Número de colunas: ") matriz = iniciaMatriz(N,M) matriz = leMatriz(matriz,N,M) #Imprimindo matriz for i in range(N): for j in range (M): print matriz[i][j], print if __name__ == "__main__": main() Sim, definimos uma função.Sim, definimos uma função. Exercício:Exercício: Faça um programa que permita ao usuário construir uma matriz de inteiros N x M. Imprima a matriz que foi fornecida. Podemos usar esta forma de impressão emPodemos usar esta forma de impressão em outros programas?outros programas? Computação I - aula 9 - 2012/2 15 Listas - Matrizes def iniciaMatriz(linha,coluna): return [[0 for j in range(coluna)] for i in range(linha)] def leMatriz(matriz,linha,coluna): for i in range(linha): for j in range(coluna): mensagem="Entre com o elemento da linha "+ str(i+1)+" e coluna "+str(j+1)+" : " matriz[i][j]= input(mensagem) return matriz def imprimirMatriz(matriz,linha,coluna): for i in range(linha): for j in range (coluna): print matriz[i][j], print return def main(): matriz = [] N = input("Número de linhas: ") M = input("Número de colunas: ") matriz = iniciaMatriz(N,M) matriz = leMatriz(matriz,N,M) imprimirMatriz(matriz,N,M) if __name__ == "__main__": main() Sim, definimos uma função.Sim, definimos uma função. Exercício:Exercício: Faça um programa que permita ao usuário construir uma matriz de inteiros N x M. Imprima a matriz que foi fornecida. Computação I - aula 9 - 2012/2 16 Listas - Matrizes Simplificando a entrada de matrizes - Elimine a função iniciaMatriz(linha,coluna) - Reescreva a função leMatriz: - Elimine as linhas de main(): N = input("Número de linhas: ") M = input("Número de colunas: ") matriz = iniciaMatriz(N,M) matriz = leMatriz(matriz,N,M) Por: matriz = leMatriz() N = len(matriz) M = len(matriz[0]) def leMatriz(): return input("Entre com a matriz: ") # ou eval(input("Entre com a matriz: ")) na versão 3.2 Computação I - aula 9 - 2012/2 17 Listas - Matrizes def leMatriz(): return input("Entre com a matriz: ") def imprimirMatriz(matriz,linha,coluna): for i in range(linha): for j in range (coluna): print matriz[i][j], print return def main(): matriz = leMatriz() N = len(matriz) M = len(matriz[0]) imprimirMatriz(matriz,N,M) if __name__ == "__main__": main() Exercício:Exercício: Faça um programa que permita ao usuário construir uma matriz de inteiros N x M. Imprima a matriz que foi fornecida. Computação I - aula 9 - 2012/2 18 Listas - MatrizesExercício:Exercício: Escreva uma função para multiplicar os elementos da diagonal principal de uma dada matriz por um valor k. Seu programa deve começar lendo a matriz. Depois, leia o valor de k. Imprima a matriz resultante. Computação I - aula 9 - 2012/2 19 Listas - Matrizes def muldiago(matriz,k): for i in range(len(matriz)): matriz[i][i] *= k return matriz def leMatriz(): return input("Entre com a matriz: ") def imprimirMatriz(matriz,linha,coluna): for i in range(linha): for j in range (coluna): print matriz[i][j], print return def main(): matriz = leMatriz() N = len(matriz) k = input(“Entre com o valor de k : “) matriz = muldiago(matriz,k) imprimirMatriz(matriz,N,N) if __name__ == "__main__": main() Exercício:Exercício: Escreva uma função para multiplicar os elementos da diagonal principal de uma dada matriz por um valor k. Seu programa deve começar lendo a matriz. Depois, leia o valor de k. Imprima a matriz resultante. Computação I - aula 9 - 2012/2 20 Listas - MatrizesExercício:Exercício: Escreva uma função para computar a linha de maior soma de uma matriz. Seu programa deve começar lendo a matriz. Após determinar a linha de maior soma, esta linha deve ser impressa assim como sua soma. Computação I - aula 9 - 2012/2 21 Listas - MatrizesExercício:Exercício: Escreva uma função para computar a linha de maior soma de uma matriz. Seu programa deve começar lendo a matriz. Após determinar a linha de maior soma, esta linha deve ser impressa assim como sua soma. def leMatriz(): return input("Entre com a matriz: ") def imprimirMatriz(matriz,linha,coluna): for i in range(linha): for j in range (coluna): print matriz[i][j], print return Computação I - aula 9 - 2012/2 22 Listas - MatrizesExercício:Exercício: Escreva uma função para computar a linha de maior soma de uma matriz. Seu programa deve começar lendo a matriz. Após determinar a linha de maior soma, esta linha deve ser impressa assim como sua soma. from functools import * def leMatriz(): return input("Entre com a matriz: ") def imprimirMatriz(matriz,linha,coluna): for i in range(linha): for j in range (coluna): print matriz[i][j], print return def add(x, y): return x+y def somalinha(matriz): return [reduce(add,linha) for linha in matriz] Computação I - aula 9 - 2012/2 23 Listas - MatrizesExercício:Exercício: Escreva uma função para computar a linha de maior soma de uma matriz. Seu programa deve começar lendo a matriz. Após determinar a linha de maior soma, esta linha deve ser impressa assim como sua soma. from functools import * def leMatriz(): return input("Entre com a matriz: ") def imprimirMatriz(matriz,linha,coluna): for i in range(linha): for j in range (coluna): print matriz[i][j], print return def add(x, y): return x+y def somalinha(matriz): return [reduce(add,linha) for linha in matriz] def main(): matriz = leMatriz() linha = len(matriz) coluna = len(matriz[0]) somaDasLinhas = somalinha(matriz) maiorSoma = max(somalinha(matriz)) indiceLinhaDaMatriz = somaDasLinhas.index(maiorSoma) imprimirMatriz(matriz,linha,coluna) print "A linha de maior soma tem valor : ",maiorSoma print "Corresponde a linha : ",matriz[indiceLinhaDaMatriz] if __name__ == "__main__": main() Computação I - aula 9 - 2012/2 24 Listas - MatrizesExercício:Exercício: Escreva uma função para computar a linha de maior soma de uma matriz. Seu programa deve começar lendo a matriz. Após determinar a linha de maior soma, esta linha deve ser impressa assim como sua soma. def leMatriz(): return input("Entre com a matriz: ") def imprimirMatriz(matriz,linha,coluna): for i in range(linha): for j in range (coluna): print matriz[i][j],print return def somalinha(matriz): return [sum(linha) for linha in matriz] def main(): matriz = leMatriz() linha = len(matriz) coluna = len(matriz[0]) somaDasLinhas = somalinha(matriz) maiorSoma = max(somalinha(matriz)) indiceLinhaDaMatriz = somaDasLinhas.index(maiorSoma) imprimirMatriz(matriz,linha,coluna) print "A linha de maior soma tem valor : ",maiorSoma print "Corresponde a linha : ",matriz[indiceLinhaDaMatriz] if __name__ == "__main__": main() Computação I - aula 9 - 2012/2 25 Listas - MatrizesExercício:Exercício: Escreva um programa para computar o produto de duas matrizes m1 e m2. Seu programa deve começar lendo as matrizes e verificando se são de tamanhos compatíveis para multiplicação. Em seguida faça o cálculo matemático, imprimindo a matriz final no formato tradicional. Computação I - aula 9 - 2012/2 26 Aula 15 – Estrutura de Dados continuação Slide 1 Slide 2 Slide 3 Slide 4 Slide 5 Slide 6 Slide 7 Slide 8 Slide 9 Slide 10 Slide 11 Slide 12 Slide 13 Slide 14 Slide 15 Slide 16 Slide 17 Slide 18 Slide 19 Slide 20 Slide 21 Slide 22 Slide 23 Slide 24 Slide 25 Slide 26
Compartilhar