Buscar

Criação, acesso e operadores de matrizes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 23 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 23 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 23 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

PENSAMENTO 
COMPUTACIONAL
Fernando Esquírio Torres
Criação, acesso 
e operadores de 
matrizes (Python)
Objetivos de aprendizagem
Ao final deste texto, você deve apresentar os seguintes aprendizados:
 � Definir matrizes em Python, a sua criação e o seu acesso.
 � Discutir os operadores de matrizes em Python.
 � Utilizar matrizes em problemas computacionais.
Introdução
As matrizes são utilizadas em diversas aplicações, por exemplo: na criação 
de objetos 2D e 3D na computação gráfica, na navegação de dispositivos 
móveis usados na robótica, na implementação de redes neurais artificiais, 
na representação de imagens digitais, entre outras. Nesse contexto, o 
Python é bastante utilizado para solucionar problemas dessas áreas, seja 
no desenvolvimento de jogos, na análise de dados em Data Science, na 
programação de robôs, etc.
A linguagem Python oferece ferramentas para manipular matrizes, 
proporcionando flexibilidade e versatilidade para trabalhar com esse tipo 
de estrutura sequencial. As matrizes são, em algumas situações, utilizadas 
para correlacionar informações, podendo armazenar dados de diversos 
tipos. Desse modo, é importante que o programador aprenda a trabalhar 
com essa estrutura sequencial de dados.
Neste capítulo, você vai verificar como definir matrizes em Python, 
como criá-las e como acessá-las. Em seguida, você vai estudar os opera-
dores de matrizes na linguagem Python. Por fim, vai analisar aplicações 
que utilizam matrizes para resolver problemas computacionais.
Matrizes em Python: criação e acesso
As matrizes podem ser compreendidas como um conjunto de dados, números 
e/ou símbolos estruturados em duas ou mais dimensões. A estrutura matricial 
mais comum é a matriz bidimensional, isto é, com duas dimensões, que tem 
sua estrutura em forma de tabela, com os elementos organizados em linhas 
e colunas.
Em Python, as matrizes são estruturas que armazenam seus dados sequen-
cialmente e permitem o acesso individual ou em grupo aos seus elementos. 
Segundo Ramalho (2015), a linguagem Python classifica as matrizes por tipos 
de dados sequenciais; elas podem ser obtidas a partir da construção de uma 
lista de listas. Os grupos de valores armazenados em uma matriz podem ser 
do mesmo tipo ou de diferentes tipos de dados (numéricos, caracteres, strings, 
etc.). Além disso, as matrizes têm a propriedade de serem utilizadas como 
objetos iteráveis, isto é, objetos cujos elementos podem ser percorridos de 
forma implícita, conforme leciona Banin (2018).
Segundo Barry (2018), na matemática, as matrizes bidimensionais m × n 
têm seus elementos organizados em m linhas e n colunas. Os elementos de 
uma matriz são indicados por aij, em que i e j são índices que representam, 
respectivamente, a linha e a coluna do elemento dentro da matriz (Figura 1). 
O índice i (linha) começa no valor 0 e vai até o valor m – 1, e o índice j vai de 
0 até o n – 1. Desse modo, o primeiro elemento da matriz a00 está na linha 0 
e na coluna 0, e o último elemento da matriz am-1n-1 está na linha m − 1 e na 
coluna n − 1. Essa informação será importante quando for necessário percorrer 
os elementos dentro de uma matriz.
Figura 1. Elementos de uma matriz bidimensional m × n.
Criação, acesso e operadores de matrizes (Python)2
Criação de matrizes em Python
Segundo Ramalho (2015), uma matriz é uma lista de listas. Relembrando: 
a criação de listas é realizada com os itens sequenciais organizados entre 
colchetes [] e separados por vírgulas, conforme o exemplo a seguir: 
a = [0, 1, 2, 3, 4]
Desse modo, a criação de uma matriz em Python é realizada pela agregação 
de listas — que não precisam ser do mesmo tamanho (número de colunas) 
—, organizadas sequencialmente. De acordo com Borges (2014), as listas 
dentro de uma matriz representam as linhas dessa matriz, e as colunas são os 
elementos das listas, como mostrado na declaração a seguir:
matriz = [lista 1, lista 2, ..., lista N]
Por exemplo, a matriz bidimensional que é mostrada a seguir possui duas 
listas, ou seja, duas linhas, e essas listas possuem dois elementos, ou seja, 
duas colunas.
matriz = [[0, 1], [2, 3]]
Assim como as listas, as matrizes podem armazenar itens heterogêneos, 
ou seja, diferentes tipos de dados. Conforme mostra o exemplo a seguir, é 
possível criar uma matriz com o nome de uma pessoa, que é uma sequência de 
caracteres, e a idade, que é um valor numérico. Observe que, nesse exemplo, 
as listas não precisam ter o mesmo tamanho (número de colunas).
matriz = [['Pedro', 22], ['Ana', 15], ['João']]
Acesso a matrizes em Python
Matrizes armazenam seus dados organizados sequencialmente em seu con-
teúdo. Elas permitem o acesso individual a cada um de seus elementos e 
podem ser utilizadas como estruturas iteráveis, conforme visto anteriormente. 
Lembre-se de que a localização dos elementos (aij) em uma matriz é indicada 
pelos índices i (linha) e j (coluna), começando a contagem sempre pelo valor 
0 (zero). Então, o primeiro elemento está na posição linha 0 (zero) e coluna 
3Criação, acesso e operadores de matrizes (Python)
0 (zero), o segundo elemento está na posição linha 0 (zero) e coluna 1 (um), 
e assim por diante.
O acesso individual a um elemento específico de uma matriz é realizado 
pelo nome dado à matriz na sua criação e pelos índices, especificando a linha 
(i) e a coluna (j) entre colchetes, como mostrado na declaração abaixo. Esse 
comando faz a leitura de um dado da matriz localizado na posição [i][j], 
indicada pelos índices linha (i) e coluna (j).
matriz[i][j]
Caso você queira modificar o valor de um elemento específico da matriz, 
basta utilizar o operador de atribuição com o novo valor a ser armazenado, 
como mostrado no comando a seguir. Na declaração mostrada, o valor 35 é 
armazenado no elemento da posição linha 0 e coluna 1.
matriz[0][1]=35
Observe o exemplo mostrado na Figura 2, que possui um código para fazer a leitura 
e a alteração de elementos de uma matriz individualmente.
(b)
(a)
Figura 2. (a) Leitura e alteração de um elemento em uma matriz. (b) Resultado da execução 
do código.
Criação, acesso e operadores de matrizes (Python)4
As linhas 4 e 5 do código da Figura 2a contêm os comandos matriz[0][0] e 
matriz[1][0], que servem para ler um elemento individualmente na matriz. O 
resultado da execução desses comandos é mostrado nas duas primeiras linhas da Figura 
2b. Os comandos das linhas 8 e 9 modificam o conteúdo de um elemento especificado 
pelos índices i (linha) e j (coluna) entre colchetes. O resultado da execução desses 
comandos é mostrado nas duas últimas linhas da Figura 2b.
Como uma matriz é uma lista de listas, o acesso a um grupo de elementos 
de uma matriz é construído por partes. Sendo assim, é possível acessar um 
conjunto de elementos da matriz das seguintes formas:
 � Indicando apenas a linha que se deseja acessar, por meio do comando 
nome_da_matriz[linha]. Esse comando acessa todos os elemen-
tos da linha da matriz.
 � Indicando um intervalo de linhas da matriz, por meio do comando 
nome_da_matriz[linha
inicial
:linha
final
]. Esse comando 
retornará as linhas a partir da linha
inicial
 até a linha
final
 – 1.
Conforme leciona Downey (2016), as colunas em uma matriz são elementos 
dentro de listas (linhas), que estão dentro da lista maior, que é a matriz. Assim, 
não é possível acessá-las dessa mesma forma, sendo necessário acessar os 
elementos individualmente (isso será visto na próxima subseção). 
Caso você queira modificar uma ou mais linhas de elementos de uma matriz, 
basta indicar o intervalo a ser alterado e utilizar o operador de atribuição com 
o conjunto de valores a ser armazenado.
5Criação, acesso e operadores de matrizes (Python)
Observe o exemplo mostrado na Figura 3, que possui um código para fazer a leitura 
e a alteração de um grupo de elementos de uma matriz.
(a)
(b)
Figura 3. (a) Leitura e alteração de um grupo de elementos em uma matriz. (b) Resultado 
da execução do código.
Segundo Ramalho (2015), a linha 5 do códigoda Figura 3a contém o comando 
numeros[0], que serve para acessar todos os elementos de uma linha. Observe na 
Figura 3b o resultado da execução desse comando. O comando da linha 8, nume-
ros[1:3], acessa as linhas 1 e 2 da matriz, que são especificadas pelo intervalo 1:3 
entre colchetes. O resultado da execução desses comandos é mostrado na segunda 
linha da Figura 3b.
A linha 11 da Figura 3a contém o comando numeros[1] = ['A', 'B', 'C', 
'D'], que modifica a lista da segunda linha da matriz. O resultado da execução desse 
comando pode ser observado na terceira linha impressa da Figura 3b. Repare que se 
pode substituir a lista completa que estava na linha selecionada pela nova lista, e essa 
nova lista não precisa ter os mesmos tipos e a mesma quantidade de elementos. O 
comando numeros[0:2] = [['W', 'X', 'Y', 'Z'],[20, 30, 40, 
50]], na linha 15 da Figura 3ª, substitui as linhas 0 e 1 da matriz, indicadas pelo 
intervalo 0:2. O resultado da execução desse comando pode ser visualizado na quarta 
linha impressa da Figura 3b.
Criação, acesso e operadores de matrizes (Python)6
Percorrer elementos de uma matriz em Python
Na subseção anterior, foi visto como acessar individualmente os elementos 
de uma matriz, e os exemplos citados funcionaram de forma satisfatória para 
acessar poucos elementos. Mas, como proceder se for necessário acessar todos 
os elementos de uma matriz? Imagine uma matriz com 100 elementos — não 
seria prático fazer um comando para acessar cada elemento individualmente, 
certo? Então, existe uma solução melhor?
De acordo com Perkovic (2016), em Python, é possível percorrer cada 
elemento de uma matriz por meio de laços de repetição (for ou while) 
aninhados (um laço dentro do outro), seja para preencher a matriz ou para 
acessar e imprimir os elementos dessa matriz.
O exemplo da Figura 4 mostra um código para preencher uma matriz 2 × 3 com valores 
numéricos, utilizando laços de repetição aninhados, e depois acessar e imprimir esses 
dados formatados em uma tabela, também utilizando laços de repetição aninhados.
(a)
(b)
(c)
Figura 4. (a) Código para percorrer dados de uma matriz. (b) Entrada de dados do programa. 
(c) Resultado da execução do código.
7Criação, acesso e operadores de matrizes (Python)
Para um melhor entendimento do código da Figura 4a, ele será explicado por 
partes. Na primeira parte, temos a criação da matriz com valores nulos. O comando da 
linha 2 cria uma matriz 2 × 3 com valores nulos; nesse caso, a dimensão da matriz foi 
preestabelecida (duas linhas e três colunas). Porém, segundo Banin (2018), existe uma 
maneira mais eficiente para popular matrizes com valores nulos, utilizando o método 
append (). Para o presente capítulo, essa forma é uma estratégia possível dentro 
do que foi ensinado para popular matrizes com valores nulos.
Na segunda parte, temos o preenchimento da matriz. Os laços de repetição (for) 
aninhados nas linhas 6 e 7 permitem o acesso a cada elemento da matriz. O comando 
for da linha 6 fixa a linha da matriz, variando a variável lin entre os valores 0 e 
len(matriz) - 1, enquanto o comando for da linha 7 varre as colunas de cada 
linha, variando a variável col entre os valores 0 e len(matriz[lin]) - 1. Assim, 
o laço externo controla as linhas da matriz, e o laço interno, as colunas, percorrendo 
todos os elementos dela. Segundo Matthes (2016), o método len() retorna o tama-
nho de uma lista mais externa. Por exemplo, o comando len(matriz) retorna a 
quantidade de linhas que estão dentro da matriz — no código da Figura 4a, temos 
duas linhas —, e o comando len(matriz([linha]) retorna o tamanho da 
lista interna de cada linha da matriz — no código da Figura 4a, temos três colunas. 
Desse modo, a linha percorre os índices 0 e 1, e a coluna percorre os índices 0, 1 e 2, 
acessando os elementos nas posições (0,0), (0,1), (0,2), (1,0), (1,1) e (1,2). O comando da 
linha 8 da Figura 4a, dentro dos for aninhados, solicita ao usuário um número que 
será armazenado em cada elemento da matriz. O resultado da execução dessa parte 
do código é mostrado na Figura 4b.
Por fim, na terceira parte, temos a impressão da matriz. Os laços for aninhados nas 
linhas 14 e 15 fazem a varredura dos elementos da matriz, de modo semelhante ao 
explicado na parte anterior. O que difere são os comandos para imprimir os valores 
da matriz formatados em uma tabela, como mostrado na Figura 4c.
De acordo com Slatkin (2015), pode-se imprimir os dados de uma tabela de 
uma maneira mais simples, sendo possível imprimir linha por linha completa 
ou elemento por elemento, sem a necessidade do método len().
Criação, acesso e operadores de matrizes (Python)8
O exemplo da Figura 5 mostra um código para percorrer uma matriz e imprimir seus 
elementos de uma maneira mais simples e prática.
(a)
(b)
Figura 5. (a) Imprimindo uma matriz de uma forma mais simples. (b) Resultado da execução 
do código.
O código mostrado na Figura 5a possui o comando para criação e inicialização da 
matriz na linha 2. O primeiro laço for na linha 6 da Figura 5a imprime as linhas da 
matriz. Nesse comando, for lin in matriz:, a variável lin percorre as listas; 
assim, a variável lin representa, a cada iteração do for, uma lin da matriz. Observe 
na primeira parte da Figura 5b que, no resultado da execução desse laço, as listas que 
compõem as linhas da matriz são impressas na tela. Nas linhas 13 e 14 da Figura 5b, o 
laço de repetição com fors aninhados imprime os elementos dessa matriz. O laço 
externo, for lin in matriz:, percorre as linhas da matriz, enquanto o laço 
interno, for elem in lin:, percorre os elementos dentro de cada lista (linha), 
ou seja, das colunas da matriz.
9Criação, acesso e operadores de matrizes (Python)
Operadores de matrizes em Python
A linguagem Python permite não somente acessar individualmente um ele-
mento de uma matriz para ler ou alterar o seu conteúdo, mas também, utilizar 
operadores para manipular as matrizes. Nesta seção, você verá como funcionam 
o operador aditivo "+", o operador multiplicativo "*" e o operador de busca 
"in" e como utilizar o método len(). 
Operador aditivo “+” com matrizes
Segundo Matthes (2016), o operador de adição “+” é utilizado para concatenar 
matrizes; ou seja, esse operador vai unir o conteúdo de uma matriz a outra 
matriz ou uma determinada lista. Portanto, deve-se ter muito cuidado ao 
utilizar esse operador, pois, em Python, quando os operandos envolvidos na 
soma forem elementos de uma lista, o resultado é a concatenação dos mesmos, 
e não a soma dos elementos da matriz, mesmo que eles sejam do tipo numérico.
O exemplo da Figura 6 mostra um código que utiliza o operador aditivo com uma matriz.
(a)
(b)
Figura 6. (a) Operador aditivo com matrizes. (b) Resultado da execução do código.
Criação, acesso e operadores de matrizes (Python)10
O código da Figura 6a mostra, na linha 2, a criação e o preenchimento de uma 
matriz 2 × 3 com valores inteiros. Na linha 3 da Figura 6a, o operador aditivo “+” no 
comando num + num concatenou duas matrizes num, resultando em uma matriz 
4 × 3; observe a nova matriz formada na linha [1]: da Figura 6b. Na linha 4 da Figura 
6a, o operador aditivo “+” no comando num + [[7, 8, 9]] uniu uma nova lista 
(linha) na matriz num, resultando em uma matriz 3 × 3; observe a nova matriz formada 
na linha [2]: da Figura 6b.
O mesmo acontece em matrizes com outros tipos de dados. Por exemplo, continu-
ando no código da Figura 6a, na linha 7, a matriz mat 2 × 2 é criada e preenchida com 
valores literais (caracteres). Na linha 8 da Figura 6a, o operador aditivo “+” no comando 
mat + mat concatenou duas matrizes mat, resultando em uma matriz 4 × 2; observe 
a nova matriz na linha [3]: da Figura 6b. Na linha 9 da Figura 6a, o operador aditivo “+” 
no comando mat + [['E', 'F']] uniu uma nova lista (linha) na matriz num, 
resultando em uma matriz 3 × 2; observe a nova matriz formada na linha [4]: da Figura 6b.
Operador multiplicativo “*” com matrizes
Segundo Matthes (2016), ooperador multiplicativo “*” é utilizado para aumen-
tar as linhas das matrizes em x vezes; ou seja, esse operador vai multiplicar a 
quantidade de listas dentro de uma matriz por um valor numérico desejado. 
Portanto, deve-se ter muito cuidado ao utilizar esse operador, pois, em Python, 
quando os operandos envolvidos na multiplicação forem elementos de uma 
lista, o resultado é a multiplicação da quantidade de listas dentro da matriz, 
e não a multiplicação dos elementos da matriz.
11Criação, acesso e operadores de matrizes (Python)
Operador de busca “in” com matrizes
Segundo Slatkin (2015), o operador de busca “in” é utilizado para procurar 
se um determinado conteúdo pertence a uma lista. Esse operador retorna 
True, caso o valor procurado pertença à lista, e False, caso não pertença. 
Como as linhas de uma matriz são formadas por listas, então, basta procurar 
em cada linha, utilizando um laço de repetição.
O exemplo da Figura 7 mostra um código que utiliza o operador multiplicativo com 
uma matriz.
(a)
(b)
Figura 7. (a) Operador multiplicativo com matrizes. (b) Resultado da execução do código.
O código da Figura 7a mostra, na linha 2, a criação e o preenchimento de uma 
matriz 2 × 3 com valores inteiros. Na linha 3 da Figura 7a, o operador multiplicativo 
“*” no comando num * 3 triplica as listas que formam a matriz num, resultando em 
uma matriz 6 × 3; observe a nova matriz formada na linha [1]: da Figura 7b. Na linha 
4 da Figura 7a, o operador multiplicativo “*” no comando teste = [[0]] * 10 
cria uma matriz teste com 10 linhas (listas) e uma coluna preenchida com o valor 
0; observe a nova matriz formada na linha [2]: da Figura 7b. Na linha 5 da Figura 7a, 
o operador multiplicativo “*” no comando teste_2 = [[2,3]] * 2 cria uma 
matriz teste_2 de tamanho 2 × 2, pois a multiplicação da lista [2,3] por 2 duplica o 
tamanho da lista; observe a nova matriz formada na linha [3]: da Figura 7b.
Criação, acesso e operadores de matrizes (Python)12
O exemplo da Figura 8 mostra um código que utiliza o operador de busca “in” com 
uma matriz.
(a)
(b)
Figura 8. (a) Operador “in” com matrizes. (b) Resultado da execução do código.
O código da Figura 8a mostra, na linha 2, a criação e o preenchimento de uma matriz 
3 × 2 com valores inteiros. Na linha 3 da Figura 8a, o laço de repetição for percorre 
cada lista da matriz e executa a busca pelo valor 1, com o comando 1 in lin, na 
linha 7 da Figura 8a. Observe o resultado da execução do código mostrado na Figura 
8b; a única busca que retornou verdadeira foi na linha 0, onde existe o valor 1.
Método len()
Segundo Banin (2018), em Python, o método len() retorna o comprimento 
de uma lista, ou seja, a quantidade de elementos existentes nessa lista. Segundo 
Matthes (2016), quando o método len() é utilizado em uma matriz, ele retorna 
a quantidade de listas que estão dentro da matriz, ou seja, o número de linhas 
dela. Esse método é muito útil para compreendermos o funcionamento dos 
operadores aditivos e multiplicativos em Python.
13Criação, acesso e operadores de matrizes (Python)
O exemplo da Figura 9 mostra um código que utiliza o método len() para mostrar 
a quantidade de linhas (listas) de uma matriz e a quantidade de colunas de cada linha 
dessa matriz.
(a)
(b)
Figura 9. (a) Método len() utilizado com matrizes. (b) Resultado da execução do código.
O código da Figura 9a contém, na linha 2, a criação de uma matriz teste construída 
com três listas, que não possuem o mesmo tamanho. Na linha 5 da Figura 9a, o comando 
len (teste) retorna a quantidade de listas (linhas) que essa matriz possui — no 
exemplo, três linhas. O resultado da execução desse comando pode ser observado 
na linha [1]: da Figura 9b.
Seguindo o código da Figura 9a, o laço de repetição da linha 9, for lin in 
teste:, percorre as linhas da matriz teste; assim, a cada iteração do laço, a variável 
lin assume o valor de uma das listas da matriz. Portanto, o comando da linha 11 da 
Figura 9a retorna a quantidade de elementos, ou seja, colunas, de cada linha da matriz 
teste, o que é apontado nas linhas [2], [3] e [4] da Figura 9b.
Criação, acesso e operadores de matrizes (Python)14
O exemplo da Figura 10 mostra um código que utiliza o método len() de diferentes 
maneiras para verificar o funcionamento dos operadores aditivo e multiplicativo.
(a)
(b)
Figura 10. (a) Método len() utilizado com matrizes. (b) Resultado da execução do código.
O código da Figura 10a contém, na linha 2, a criação de uma matriz teste cons-
truída com três listas, que não possuem o mesmo tamanho. Na linha 5 da Figura 10a, 
o comando len (teste) retorna a quantidade de listas (linhas) que essa matriz 
possui — no exemplo, três linhas. O resultado da execução desse comando pode ser 
observado na linha [1]: da Figura 10b.
Seguindo o código da Figura 10a, o comando len (teste_2) da linha 11 retorna 
a quantidade de listas (linhas) que a matriz teste_2 possui — no exemplo, quatro 
linhas; observe que, na linha 8, uma nova lista foi adicionada à matriz, por meio do 
operador aditivo. O resultado da execução desse comando pode ser observado na 
linha [2]: da Figura 10b.
15Criação, acesso e operadores de matrizes (Python)
Continuando no código da Figura 10a, o comando len (teste_3) da linha 18 
retorna a quantidade de listas (linhas) que a matriz teste_3 possui — no exemplo, 
cinco linhas; observe que, na linha 15, duas novas listas foram adicionadas à matriz, 
por meio do operador aditivo. O resultado da execução desse comando pode ser 
observado na linha [3]: da Figura 10b.
Por fim, no código da Figura 10a, o comando len (teste_4) da linha 24 retorna 
a quantidade de listas (linhas) que a matriz teste_4 possui — no exemplo, seis linhas; 
observe que, na linha 21, o número de listas da matriz teste foi multiplicado por 2, 
ou seja, foi dobrado. O resultado da execução desse comando pode ser observado 
na linha [4]: da Figura 10b.
Matrizes em problemas computacionais
As matrizes são amplamente utilizadas no processamento digital de imagens, 
para armazenar digitalmente uma foto ou uma figura; dessa forma, o progra-
mador pode realizar a análise de dados multidimensionais das informações 
contidas nessa imagem. Por exemplo, uma fotografia capturada por um robô 
explorador em Marte é armazenada digitalmente em forma de uma matriz, 
assim como uma fotografia capturada por um radar de velocidade.
A análise digital de imagem já está presente no nosso dia a dia em diversas 
situações. Por exemplo, o Facebook consegue identificar pessoas e objetos 
nas fotos postadas na rede social; o Google utiliza imagens no reCAPTCHA, 
que é uma técnica para detectar se o usuário que está acessando determinado 
conteúdo é um humano ou um robô.
O exemplo da Figura 11, a seguir, mostra como ler a imagem do logo do 
Python, mostrado na Figura 12. Essa imagem tem 1024 × 1024 pixels; ou seja, 
ela tem 1024 pixels de altura e 1024 pixels de largura. Além disso, ela possui 
quatro canais de cores, sendo três deles para o RGB (red, green e blue) e mais 
um canal para a escala de cinza. Nesse exemplo, são realizadas operações 
simples, pois o foco deste capítulo é mostrar como matrizes podem ser úteis 
em problemas computacionais, e não ensinar a fazer o processamento digital 
de imagens.
Criação, acesso e operadores de matrizes (Python)16
Figura 11. (a) Código para armazenar uma imagem em uma matriz e extrair 
informações dela. (b) Resultado da execução do código.
(a)
(b)
Figura 12. Logotipo do Python.
Fonte: The Python… (2019, documento 
on-line).
A linha 2 do código da Figura 11a contém a importação da biblioteca 
matplotlib. Essa biblioteca contém os métodos para plotagem de gráficos 
e para trabalhar com imagens na linguagem de programação Python. Na 
linha 4 da Figura 11a, o comando imagem = imread() lê uma imagem 
de diferentes formatos (JPG, PNG, TIFF, etc.), indicada no caminho entre 
parênteses, e salva em uma variável as informações da imagem, em forma 
de matriz (Figura 13). A função imread()utiliza métodos vetorizados, 
semelhantes aos laços de repetição (for ou while), para percorrer as linhas 
17Criação, acesso e operadores de matrizes (Python)
(altura) e as colunas (largura) da imagem e armazena esses dados em uma 
matriz. Lembre-se de que você deverá colocar o caminho completo da imagem 
como parâmetro da função imread ().
Figura 13. Variável imagem com os dados digitais da imagem.
Continuando no código da Figura 11a, o comando imagem.shape[], 
utilizado nas linhas 6, 8 e 9, retorna as propriedades, como o número de linhas, 
colunas e canais de cores da imagem armazenada na variável. Sendo assim, 
o comando imagem.shape[0] na linha 6 obtém a largura da imagem, ou 
seja, o número de colunas dela. O comando imagem.shape[1] obtém a 
altura da imagem, ou seja, o número de linhas dela. E, por fim, o comando 
imagem.shape[2] obtém o número de canais de cores (quatro canais). A 
Figura 11b mostra o resultado da execução desse código, que será impresso 
na tela.
Criação, acesso e operadores de matrizes (Python)18
Outro exemplo muito comum do uso de matrizes em Python é para transfor-
mar imagens coloridas em imagens em tons de cinza. Essa técnica é utilizada 
em muitas aplicações no processamento de imagens, como na detecção de 
borda, na impressão em preto e branco e no processamento de imagem em 
um único canal. A linguagem Python, juntamente com as bibliotecas mat-
plotlib, pillow e numpy, permite escrever um código para converter 
uma imagem colorida em uma imagem em tons de cinza, conforme mostra a 
Figura 14a. O resultado é mostrado na Figura 14b.
Figura 14. (a) Código para converter uma imagem colorida em uma imagem em tons 
de cinza. (b) Resultado da execução do código.
(a)
(b)
BANIN, S. L. Python 3: conceitos e aplicações: uma abordagem didática. São Paulo: 
Érica, 2018, 264 p.
BARRY, P. Use a cabeça! Python. 2. ed. Rio de Janeiro: Alta Books, 2018. 616 p. (Série Use 
a Cabeça/Head First).
19Criação, acesso e operadores de matrizes (Python)
DOWNEY, A. B. Pense em Python: pense como um cientista da computação. São Paulo: 
Novatec, 2016. 312 p. Disponível em: https://penseallen.github.io/PensePython2e/. 
Acesso em: 23 jun. 2019.
MATTHES, E. Curso intensivo de Python: uma introdução prática e baseada em projetos 
à programação. São Paulo: Novatec, 2016. 656 p.
PERKOVIC, L. Introdução à computação usando Python: um foco no desenvolvimento 
de aplicações. Rio de Janeiro: LTC, 2016. 516 p.
RAMALHO, L. Python fluente. São Paulo: Novatec, 2015. 800 p.
SLATKIN, B. Python eficaz: 59 maneiras de programar melhor em Python. São Paulo: 
Novatec, 2015. 296 p.
THE PYTHON Logo. Python Software Foundation, Wilmington, 2019. Disponível em: 
https://staging.python.org/community/logos/. Acesso em: 30 jun. 2019.
Leituras recomendadas
BORGES, L. E. Python para desenvolvedores: aborda Python 3.3. São Paulo: Novatec, 2014. 
CLARK, A. et al. Pillow - the friendly Python Imaging Library fork. Read the Docs, Portland, 
2019. Disponível em: https://pillow.readthedocs.io/en/stable/. Acesso em: 30 jun. 2019.
MATPLOTLIB: Python plotting. The Matplotlib development team, [S. l.], 2018. Disponível 
em: https://matplotlib.org/. Acesso em: 30 jun. 2019.
NUMPY: the fundamental package for scientific computing with Python. NumPy de-
velopers, [S. l.], 2019. Disponível em: https://www.numpy.org/. Acesso em: 30 jun. 2019.
RAMALHO, L. Dados sequenciais. In: RAMALHO, L. Python fluente. São Paulo: Novatec, 
2015. cap. 2.
Criação, acesso e operadores de matrizes (Python)20

Outros materiais