Você está na página 1de 8

Computação I - Python

Aula 9 - Matrizes e loop aninhado

Apresentado por: Bernardo F. Costa


Produção DCC-UFRJ
Metodologia de referência https://doi.org/10.5753/wei.2016.9683

http://www.dcc.ufrj.br/˜pythonUFRJ/ Computação I - Python Aula 3 1/8


Matriz

Matrizes podem ser


representadas por lista de listas #organização por linhas
>>> matriz = [ [4, 10, 7.3, 16], [0.5,
Como organizar os elementos 0, 5, 102], [1, 3.6, 9, 40.8] ]
numa lista de listas? >>> matriz[0][1]
10
Organização por linhas permite >>> matriz[1][2]
5
acesso conhecido: >>> matriz[2][3]
matriz[linha][coluna] 40.8
#organização por colunas
>>> matriz = [ [4, 0.5, 1], [10, 0,
  3.6], [7.3, 5, 9], [16, 102, 40.8] ]
4 10 7.3 16 >>> matriz[0][1]
matriz = 0.5 0 5 102  0.5
1 3.6 9 40.8 >>> matriz[1][2]
3.6
>>> matriz[2][3]
9

http://www.dcc.ufrj.br/˜pythonUFRJ/ Computação I - Python Aula 3 2/8


Matriz

Como acessar todos os elementos de uma matriz?


A função abaixo usa ı́ndices para calcular a densidade de uma matriz
Dois ı́ndices: linhas (i) e colunas (j)
Dois laços: um para linha, outro para coluna
Laços aninhados: loop = linhas × colunas
Quatro contadores: total de elementos (total), quantidade de zeros
(zeros), linhas (i) e colunas (j)
def densidadeMatriz1 ( matriz ) :
’ ’ ’ R e t o r n a a d e n s i d a d e de uma m a t r i z , ou s e j a ,
a p r o p o r c a o de e l e m e n t o s d i f e r e n t e s de z e r o .
l i s t ( l i s t ) −> f l o a t ’ ’ ’
total = 0
zeros = 0
f o r i in range ( len ( matriz ) ) :
f o r j in range ( len ( matriz [ i ] ) ) :
total = total + 1
i f m a t r i z [ i ] [ j ] == 0 :
zeros = zeros + 1
return ( total − zeros )/ total

http://www.dcc.ufrj.br/˜pythonUFRJ/ Computação I - Python Aula 3 3/8


Matriz

Melhoria possı́vel
Quantidade de elementos (total) pode ser calculada multiplicando-se
total de linhas por colunas
Três contadores: quantidade de zeros (zeros), linhas (i) e colunas (j)
def densidadeMatriz2 ( matriz ) :
’ ’ ’ R e t o r n a a d e n s i d a d e de uma m a t r i z , ou s e j a ,
a p r o p o r c a o de e l e m e n t o s d i f e r e n t e s de z e r o .
l i s t ( l i s t ) −> f l o a t ’ ’ ’
zeros = 0
f o r i in range ( len ( matriz ) ) :
f o r j in range ( len ( matriz [ i ] ) ) :
i f m a t r i z [ i ] [ j ] == 0 :
zeros = zeros + 1
t o t a l = l e n ( matriz )∗ l e n ( matriz [ 0 ] )
return ( total − zeros )/ total

http://www.dcc.ufrj.br/˜pythonUFRJ/ Computação I - Python Aula 3 4/8


Matriz

Outra melhoria possı́vel


Usando for, não precisamos de ı́ndices para acessar elementos
Dois contadores: total de elementos (total) e quantidade de zeros
(zeros)
def densidadeMatriz3 ( matriz ) :
’ ’ ’ R e t o r n a a d e n s i d a d e de uma m a t r i z , ou s e j a ,
a p r o p o r c a o de e l e m e n t o s d i f e r e n t e s de z e r o .
l i s t ( l i s t ) −> f l o a t ’ ’ ’
total = 0
zeros = 0
for linha in matriz :
for a i j in linha :
total = total + 1
i f a i j == 0 :
zeros = zeros + 1
return ( total − zeros )/ total

http://www.dcc.ufrj.br/˜pythonUFRJ/ Computação I - Python Aula 3 5/8


Matriz

Combinando as melhorias possı́veis


Ficamos apenas com o contador necessário
Um contador: quantidade de zeros (zeros)
def densidadeMatriz4 ( matriz ) :
’ ’ ’ R e t o r n a a d e n s i d a d e de uma m a t r i z , ou s e j a ,
a p r o p o r c a o de e l e m e n t o s d i f e r e n t e s de z e r o .
l i s t ( l i s t ) −> f l o a t ’ ’ ’
zeros = 0
for linha in matriz :
for a i j in linha :
i f a i j == 0 :
zeros = zeros + 1
t o t a l = l e n ( matriz )∗ l e n ( matriz [ 0 ] )
return ( total − zeros )/ total

http://www.dcc.ufrj.br/˜pythonUFRJ/ Computação I - Python Aula 3 6/8


Matriz

Revisão
Matrizes podem ser representadas por lista de listas
Organização por linhas é mais intuitiva e preferı́vel
Índice de linhas vem antes do ı́ndice de colunas
Precisamos de laços aninhados para acessar todos os elementos de uma
matriz
Usando for podemos acessar os elementos sem ı́ndices

http://www.dcc.ufrj.br/˜pythonUFRJ/ Computação I - Python Aula 3 7/8


Autores
João C. P. da Silva Lattes

Carla Delgado Lattes

Ana Luisa Duboc Lattes

Colaboradores
Anamaria Martins Moreira Lattes

Fabio Mascarenhas Lattes

Leonardo de Oliveira Carvalho Lattes

Charles Figueiredo de Barros Lattes

Fabrı́cio Firmino de Faria Lattes

http://www.dcc.ufrj.br/˜pythonUFRJ/ Computação I - Python Aula 3 8/8

Você também pode gostar