Prévia do material em texto
PENSAMENTO COMPUTACIONAL Fernando Esquírio Torres Identificação interna do documento Criação, acesso e operadores de listas (Python) Objetivos de aprendizagem Ao final deste texto, você deve apresentar os seguintes aprendizados: � Definir listas em Python, a sua criação e o seu acesso. � Discutir os operadores de listas em Python. � Utilizar listas em problemas computacionais. Introdução As listas são estruturas de dados simples, bastante utilizadas para armaze- nar conteúdos variados e, assim, evitar criar uma quantidade numerosa de variáveis no seu programa. Essa é, portanto, a maior vantagem de utilizar listas em seu código, pois é possível trabalhar com mais variáveis utili- zando um único nome. As listas também são conhecidas como vetores. Porém, em Python, o conceito de listas vai muito além de um conjunto de dados listados sequencialmente na memória — elas agregam diversas funcionalidades e métodos. A linguagem Python oferece diferentes maneiras de manipular listas, que proporcionam flexibilidade e versatilidade para trabalhar com esse tipo de estrutura sequencial. As listas podem armazenar itens de mesmo tipo ou de diferentes tipos de dados. Desse modo, é importante que o programador aprenda a trabalhar com essa estrutura sequencial de dados. Neste capítulo, você vai verificar como definir listas em Python, como criá-las e como acessá-las. Em seguida, você vai identificar os operadores de listas na linguagem Python e, por fim, vai analisar aplicações que utilizam listas para resolver problemas computacionais. Identificação interna do documento Listas em Python: definição, criação e acesso Segundo Ramalho (2015), as listas podem ser compreendidas como um con- junto de dados, números e/ou símbolos que são estruturados em uma dimensão. A linguagem Python classifica as listas conforme os tipos de dados sequenciais; uma lista pode armazenar itens do mesmo tipo ou de diferentes tipos de dados (numéricos, caracteres, strings, etc.). Segundo Banin (2018), uma lista pode ser considerada como uma estrutura que ar- mazena seus dados sequencialmente na memória e permite o acesso individual ou em grupo aos seus elementos. Segundo Barry (2018), a lista tem seus elementos organizados em uma linha e n colunas, formando, assim, um vetor 1 × n. Os elementos de uma lista são indicados por aj, em que j é o índice que representa a coluna do elemento dentro da lista (Figura 1). O índice j vai de 0 (zero) até n − 1. Desse modo, o primeiro elemento da lista, a0, está na coluna 0 (zero), e o último elemento da lista, an–1, está na coluna n – 1. Essa informação será importante quando for necessário percorrer ou modificar os elementos dentro de uma lista. Figura 1. Elementos de uma lista 1 × n. n – 1 Criação, acesso e operadores de listas (Python)2 Identificação interna do documento Criação de listas em Python Segundo Ramalho (2015), a criação de listas é realizada com os itens se- quenciais organizados entre colchetes [ ] e separados por vírgulas, conforme o exemplo a seguir, que cria uma lista com cinco valores numéricos inteiros. a = [0, 1, 2, 3, 4] Porém, as listas também podem armazenar itens heterogêneos, abrangendo diferentes tipos de dados. O exemplo a seguir mostra como é possível criar uma lista para armazenar itens variados, como o nome de uma pessoa, que é uma sequência de caracteres, a idade, que é um valor numérico inteiro, o saldo bancário, que é um valor numérico real, e o status atual da pessoa, que é um valor booleano. lista = ['Jorel', 22, 215.24, True] Acesso às listas em Python Segundo Ramalho (2015), as listas armazenam seus dados organizados se- quencialmente e permitem o acesso individual a cada um de seus elementos, ou o acesso a um grupo de elementos. Nas listas, é possível percorrer todos os elementos de forma implícita; sendo assim, elas podem ser utilizadas como estruturas iteráveis. Como visto anteriormente, a localização dos elementos (aj) em uma lista é indicada pelo índice j (coluna), que indica a posição do elemento na lista, iniciando a contagem sempre pelo valor 0 (zero). Então, o primeiro elemento está na posição coluna 0 (zero), o segundo elemento está na posição coluna 1 (um), e assim por diante. O acesso individual a um elemento específico de uma lista é realizado pelo nome dado à lista na sua criação e o índice, que especifica a coluna entre colchetes, como mostrado na declaração a seguir. Esse comando faz a leitura de um dado da lista localizado na posição [j], que indica a coluna da lista. lista[j] 3Criação, acesso e operadores de listas (Python) Identificação interna do documento Caso você queira modificar o valor de um elemento específico da lista, basta utilizar o operador de atribuição com o novo valor a ser armazenado, como mostrado no comando abaixo. Na declaração mostrada, o valor 35 é armazenado no elemento da posição coluna 1 da lista. lista[1] = 35 Observe o exemplo mostrado na Figura 2, que possui um código para fazer a leitura e a alteração individual de elementos de uma lista. (a) (b) Figura 2. (a) Código de leitura e alteração de um elemento em uma lista. (b) Resultado da execução do código. O código mostrado na Figura 2a mostra a criação da lista (linha 1) com o nome minha _ lista. Essa lista contém itens de diferentes tipos de dados. O comando print da linha 4 imprime a lista original. O resultado da execução desse comando é mostrado na primeira linha da Figura 2b. As linhas 7 e 9 do código da Figura 2a contêm os comandos minha _ lista[0] e minha _ lista[1], que servem para ler um elemento em uma posição específica na lista. O resultado da execução desses comandos é mostrado na segunda e na terceira linhas da Figura 2b. Os comandos das linhas 12 e 13 modificam o conteúdo de um elemento especificado pelo índice j (coluna) entre colchetes. O resultado da execução desses comandos é mostrado nas duas últimas linhas da Figura 2b. Segundo Slatkin (2015), além de acessar individualmente os elementos de uma lista, é possível acessar um grupo de elementos dela. O acesso a um grupo de elementos de uma lista é feito determinando-se o intervalo de elementos desejado, utilizando uma das seguintes formas: Criação, acesso e operadores de listas (Python)4 Identificação interna do documento � Utilizando o sinal de “:” entre os colchetes, indicando o acesso a todos os elementos de uma lista por meio do comando nome _ da _ lista[:]. � Indicando um intervalo de colunas da lista por meio do comando nome _ da _ lista[col inicial :col final ]. Esse comando retornará os elementos a partir da col inicial até a col final – 1. De acordo com Downey (2016), caso você queira modificar um ou mais elementos de uma lista, basta indicar o intervalo a ser alterado e utilizar o operador de atribuição com o conjunto de valores a ser armazenado. 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 lista. (a) (b) Figura 3. (a) Código de leitura e alteração de um grupo de elementos em uma lista. (b) Resultado da execução do código. Conforme explica Ramalho (2015), a linha 5 do código da Figura 3a contém o comando numeros[:], que serve para acessar todos os elementos de uma lista. Observe na Figura 3b o resultado da execução desse comando. O comando da linha 8, nume- ros[1:3], acessa os elementos das posições 1 e 2 da lista, 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[5:8] = ['A', 'B', 'C'], que modifica os elementos nas posições 5, 6 e 7 da lista. O resultado da execução desse comando pode ser observado na terceira linha impressa da Figura 3b — repare que são substituídos apenas os elementos a partir da posição 5 da lista. O resultado da execução desse comando pode ser visualizado na última linha impressa da Figura 3b. 5Criação, acesso eoperadores de listas (Python) Identificação interna do documento De acordo com Banin (2018), se você tentar acessar uma posição da lista que não contenha elementos, ocorrerá um erro de execução, devido à tentativa de acessar um índice fora da faixa da lista. Percorrer elementos de uma lista em Python Acessar um elemento de uma lista é bem simples, conforme foi mostrado na seção anterior. Os exemplos citados anteriormente funcionam de forma satisfatória para acessar poucos elementos; mas, e se for necessário acessar todos os elementos de uma lista? Imagine uma lista com 100 elementos — não seria prático fazer 100 linhas de comando com cada acesso individual. Então, é preciso pensar em uma solução melhor. Mas qual seria essa solução? De acordo com Perkovic (2016), em Python, é possível percorrer cada elemento de uma lista por meio de um laço de repetição (for ou while), seja para preencher a lista ou para acessar e imprimir os elementos dela. O exemplo da Figura 4 mostra um código para preencher uma lista 1 x 5 com valores numéricos, utilizando o laço de repetição for, e, depois, acessar e imprimir esses dados formatados em uma tabela, também utilizando um laço de repetição for. (a) (b) (c) Figura 4. (a) Código para percorrer elementos de uma lista e (b) entrada de dados do programa. (c) Resultado da execução do código. Criação, acesso e operadores de listas (Python)6 Identificação interna do documento Para um melhor entendimento do código da Figura 4a, ele será explicado por partes. Na primeira parte, temos a criação da lista com valores nulos; o comando da linha 2 cria uma lista com cinco valores numéricos nulos. Nesse caso, a dimensão da lista foi preestabelecida (cinco colunas). Porém, segundo Banin (2018), existe uma maneira mais eficiente para popular listas com valores nulos, utilizando o método append (), que não será tratado neste capítulo. Aqui, é empregada uma estratégia para popular matrizes com valores nulos com base no conteúdo do presente capítulo. Na segunda parte do código, ocorre o preenchimento da lista, e o laço de repetição for na linha 6 permite acessar cada elemento dela. O comando for da linha 6 altera a variável col entre os valores 0 e len(minha _ lista) – 1. Assim, é possível percorrer todos os elementos da lista. Segundo Matthes (2016), o método len() retorna o tamanho de uma lista; por exemplo, o comando len(minha _ lista) retorna o tamanho da lista, ou seja, o número de elementos da lista, conforme pode ser observado no código da Figura 4a. Desse modo, a variável col percorre os índices 0, 1, 2, 3, 4 e 5, acessando os elementos nas posições minha _ lista[0], mi- nha _ lista[1], minha _ lista[2], minha _ lista[3], minha _ lista[4] e minha _ lista[5]. O comando da linha 7 da Figura 4a, dentro do laço for, solicita ao usuário que digite o número que será armazenado em cada elemento da lista. O resultado da execução dessa parte do código é mostrado na Figura 4b. Por fim, na terceira parte, “imprimindo a lista”, o laço for na linha 13 faz a varredura dos elementos da lista, de forma semelhante ao explicado na parte anterior. O que difere são os comandos para imprimir os valores da lista formatados em uma tabela, como mostrado na Figura 4c. Clonando uma lista em Python Segundo Ramalho (2015), o programador de Python deve tomar cuidado ao copiar os elementos de uma lista para outra. Assim como ocorre com as variáveis, no momento em que uma lista é declarada, ela faz referência a um objeto. Então, o sinal de atribuição “=” faz com que as duas listas referenciem ao mesmo objeto, ou seja, ao mesmo endereço de memória. Sendo assim, utilizar o sinal de atribuição “=” para copiar o conteúdo de uma lista para outra pode não surtir o resultado esperado. A Figura 5 mostra como funciona o sinal de atribuição para “copiar” o conteúdo de listas. 7Criação, acesso e operadores de listas (Python) Identificação interna do documento Figura 5. (a) Código que utiliza o sinal de atribuição “=” com uma lista. (b) Resultado da execução do código. (a) (b) O código da Figura 5a contém a criação da lista original na linha 2, com três elementos, por meio do comando minha _ lista = ['A', 'B','C']. A linha 4 apresenta o comando outra _ lista = minha _ lista, que utiliza o sinal de atribuição “=”; isso faz com que a segunda lista (ou- tra _ lista) referencie o mesmo endereço de memória da lista original. Sendo assim, o comando da linha 6, minha _ lista[0] = 1, modifica o elemento da posição 0 da lista original. Porém, ao executar os comandos das linhas 7 e 8, observa-se que as duas listas tiveram o seu conteúdo modificado. O resultado é mostrado nas duas primeiras linhas da Figura 5b. Seguindo o código, o comando da linha 11, outra _ lista[2] = 5, modifica o elemento da posição 2 da segunda lista. Mas, ao executar os coman- dos das linhas 12 e 13, observa-se que as duas listas tiveram o seu conteúdo modificado. O resultado é mostrado nas duas últimas linhas da Figura 5b. Nos dois casos, o conteúdo das duas listas é modificado, pois, como já foi dito, o sinal de atribuição “=” faz com que as duas listas apontem para o mesmo objeto. Portanto, ao modificar um elemento de qualquer uma das listas, ambas terão seu conteúdo alterado. Para evitar alterações indesejadas no conteúdo de uma lista, é necessário cloná-la e, assim, criar um objeto, ou seja, uma nova referência na memória. Isso pode ser feito indicando-se o intervalo completo dos elementos da lista, ou por meio do método copy(). A Figura 6 mostra as duas maneiras de clonar uma lista. Criação, acesso e operadores de listas (Python)8 Identificação interna do documento Figura 6. (a) Código para clonar uma lista. (b) Resultado da execução do código. (a) (b) O código da Figura 6a contém a criação da lista original na linha 2, com três elementos, por meio do comando minha _ lista = ['A', 'B','C']. A linha 4 possui o comando segunda _ lista = minha _ lista[:], que utiliza o sinal de atribuição “=”, mas indicando o grupo de elementos que será acessado. O sinal “:” dentro de colchetes indica todos os elementos da lista; isso faz com que a segunda lista vire uma cópia da primeira lista e referencie um novo objeto e, consequentemente, um novo endereço de memória da lista original. Sendo assim, o comando da linha 6, minha _ lista[0] = 1, modifica apenas o elemento da posição 0 da lista original. Ao executar os comandos das linhas 7 e 8, observa-se que a lista original foi modificada, e a segunda lista, não. O resultado é mostrado nas duas primeiras linhas da Figura 6b. Seguindo o código, o comando da linha 11, segunda _ lista[2] = 5, modifica apenas o elemento da posição 2 da segunda lista. Ao executar os comandos das linhas 12 e 13, observa-se que apenas a segunda lista foi modificada, e a lista original, não. O resultado é mostrado na terceira e na quarta linhas da Figura 6b. Na linha 16, o comando terceira _ lista = minha _ lista. copy() utiliza o método copy(), que copia os elementos de uma lista em outra, criando um novo objeto na memória do computador. Sendo assim, o comando da linha 18, minha _ lista[0] = 1, modifica apenas o ele- mento da posição 0 da lista original. Ao executar os comandos das linhas 19 e 20, observa-se que a lista original foi modificada, e a terceira lista, não. O 9Criação, acesso e operadores de listas (Python) Identificação interna do documento resultado é mostrado na Figura 6b. Seguindo o código, o comando da linha 23, terceira _ lista[2] = 5, modifica apenas o elemento da posição 2 da terceira lista. Ao executar os comandos das linhas 24 e 25, observa-se que apenas a terceira lista foi modificada, e a lista original, não. O resultado é mostrado na Figura 6b. Operadores de matrizes em Python A linguagem Python permite não somente acessar individualmente um ele- mento de uma lista para ler ou alterar o seu conteúdo como também utilizar operadores para manipular as listas. Nesta seção, você verá como funcionamo operador aditivo “+”, o operador multiplicativo “*” e o operador de busca “in”. Você também vai verificar como utilizar o método len(). Operador aditivo “+” com listas Segundo Matthes (2016), o operador de adição “+” é utilizado para concatenar listas, ou seja, esse operador vai unir o conteúdo de uma lista a outra. 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 operação matemática de soma dos elementos da lista, mesmo que esses elementos sejam do tipo numérico. O exemplo da Figura 7 mostra um código que utiliza o operador aditivo com listas. (a) (b) Figura 7. (a) Operador aditivo com listas. (b) Resultado da execução do código. Criação, acesso e operadores de listas (Python)10 Identificação interna do documento O código da Figura 6a mostra na linha 2 a criação e o preenchimento de uma lista com três elementos numérico inteiros. Na linha 3 da Figura 6a, o operador aditivo ”+” no comando uma _ lista + uma _ lista concatenou as duas listas uma _ lista, resultando em uma lista com seis elementos; observe a nova lista impressa na linha [1] da Figura 6b. Na linha 4 da Figura 6a, o operador aditivo “+” no comando uma _ lista + [4,5] uniu os elementos listados entre colchetes na lista original uma _ lista, resultando em uma lista com cinco elementos; observe a nova lista impressa na linha [2] da Figura 6b. Observe que o mesmo acontece com listas que possuem outros tipos de dados. Por exemplo, continuando no código da Figura 6a, na linha 7, a lista outra _ lista é criada e preenchida com cinco valores literais (caracteres). Na linha 8 da Figura 6a, o operador aditivo “+” no comando outra _ lista + outra _ lista concate- nou as duas listas, resultando em uma lista com oito elementos; observe a nova lista impressa na linha [3] da Figura 6b. Na linha 9 da Figura 6a, o operador aditivo “+” no comando outra _ lista + ['E', 'F'] uniu os elementos entre colchetes na lista outra _ lista, resultando em uma lista com seis elementos; observe a nova lista impressa na linha [4] da Figura 6b. Operador multiplicativo “*” com matrizes Segundo Matthes (2016), o operador multiplicativo “*” é utilizado para multiplicar x vezes a quantidade de elementos de uma lista; ou seja, esse operador produz uma nova lista com repetições da lista original. 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 elementos da lista, e não a operação matemática de multiplicação dos elementos dela. 11Criação, acesso e operadores de listas (Python) Identificação interna do documento O exemplo da Figura 8 mostra um código que utiliza o operador multiplicativo com listas. (a) (b) Figura 8. (a) Operador multiplicativo 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 lista com quatro valores inteiros. Na linha 3 da Figura 8a, o operador multiplicativo “*” no comando num * 3 triplica a quantidade de elementos da lista, repetindo eles por três vezes; observe a impressão da nova lista na linha [1] da Figura 8b. Na linha 4 da Figura 8a, o operador multiplicativo “*” no comando teste = [0] * 10 cria uma lista teste com 10 elementos com o valor zero; observe a impressão dessa lista na linha [2] da Figura 8b. Na linha 5 da Figura 8a, o operador multiplicativo “*” no comando teste _ 2 = [2,3] * 2 cria uma matriz teste _ 2 com quatro elementos, pois a multiplicação da lista [2,3] por 2 duplica o tamanho da lista; observe a impressão da nova lista na linha [3] da Figura 8b. Operador de busca “in” com listas Segundo Slatkin (2015), o operador de busca “in” é utilizado para verificar 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. Criação, acesso e operadores de listas (Python)12 Identificação interna do documento O exemplo da Figura 9 mostra um código que utiliza o operador de busca “in” com listas. (a) (b) Figura 9. (a) Operador “in” com listas. (b) Resultado da execução do código. O código da Figura 9a mostra, na linha 2, a criação e o preenchimento de uma lista com nove valores inteiros. Na linha 4 da Figura 9a, o comando 1 in lin verifica se o valor 1 pertence a essa lista. Na linha 6 da Figura 9a, o comando 8 in lin verifica se o valor 8 pertence a essa lista. Na linha 8 da Figura 9a, o comando 10 in lin verifica se o valor 10 pertence a essa lista. Observe no resultado da execução do código, mostrado na Figura 9b, que os valores 1 e 8 pertencem à lista, enquanto o valor 10 não pertence. 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. Esse método é muito útil para compreenderemos o funcionando dos operadores aditivos e multiplicativos em Python. 13Criação, acesso e operadores de listas (Python) Identificação interna do documento O exemplo da Figura 10 mostra um código que utiliza o método len() para mostrar a quantidade de elementos de diversas listas. (a) (b) Figura 10. (a) Método len() utilizado com listas. (b) Resultado da execução do código. O código da Figura 10a contém, na linha 2, a criação da primeira lista, lista _ 1, construída com quatro elementos com tipos de dados diferentes. Na linha 5 da Figura 9a, o comando len (teste) retorna a quantidade de elementos que a primeira lista possui — nesse exemplo, são quatro elementos. O resultado da execução desse comando pode ser observado na primeira linha impressa da Figura 9b. A linha 7 traz a criação da segunda lista, lista _ 2. Observe que o comando len (lista _ 2) da linha 9 retorna que a segunda lista tem quatro elementos também — veja a segunda linha impressa da Figura 10b. Isso acontece porque o Python entende que a lista [‘A’, ‘B’] é um elemento da lista e, assim, indica que a lista tem quatro elementos. Seguindo o código da Figura 10a, verifica-se a criação da terceira lista, lista _ 3, na linha 12. O comando len (lista _ 3) da linha 14 retorna que a terceira lista tem quatro elementos, conforme mostra a terceira linha impressa da Figura 10b. Isso porque as listas dentro de uma lista são contadas como elementos (colunas) da lista. Uso de matrizes em problemas computacionais As listas são utilizadas em diversos problemas computacionais, como em programas para realizar cálculos matemáticos entre listas com valores numé- ricos, em programas para criar gráficos para visualizar dados e em programas para gerar relatórios com dados de vendas de um estabelecimento comercial. Criação, acesso e operadores de listas (Python)14 Identificação interna do documento Desse modo, o armazenamento de dados em listas é bastante comum em programação, pois seu uso facilita e dinamiza um programa que necessita de grandes quantidades de variáveis. Afinal, é mais simples acessar os dados a partir de uma variável com nome único, apenas referenciando a posição por meio dos índices da lista. Biblioteca numpy Segundo Ramalho (2015), a biblioteca numpy é um pacote de ferramentas utilizado para executar cálculos matemáticos com arrays multidimensionais (listas e matrizes) em Python. Ela contém funções e métodos que auxiliam os programadores a realizar operações numéricas com listas e vetores, necessá- rias em diversas áreas, como no posicionamento espacial de manipuladores robóticos, em modelos machine learning, no processamento de imagem em computação gráfica, entre outras aplicações. A Figura 11 mostra um código que utiliza a biblioteca numpy para criar e realizar operações matemáticas com listas em Python. Figura 11. (a) Código com a biblioteca numpy para trabalhar com listas. (b) Resultado da execução do código. (a) (b) 15Criação,acesso e operadores de listas (Python) Identificação interna do documento Na Figura 11a, é possível observar, na linha 2, a importação da biblioteca numpy. Nas linhas 4 e 5, o método array() é utilizado para criar as listas com elementos listados entre colchetes. Seguindo o código, a linha 9 realiza a operação de soma entre os elementos das listas. A operação matemática da linha 9 soma o primeiro elemento da primeira lista com o primeiro elemento da segunda lista, o segundo elemento da primeira lista com o segundo ele- mento da segunda lista, e assim por diante. A linha 10 realiza a operação de subtração dos elementos entre as listas. A operação matemática da linha 10 subtrai o primeiro elemento da primeira lista com o primeiro elemento da segunda lista, o segundo elemento da primeira lista com o segundo elemento da segunda lista, e assim por diante. A linha 11 realiza a operação de mul- tiplicação dos elementos entre as listas. A operação matemática da linha 11 multiplica o primeiro elemento da primeira lista com o primeiro elemento da segunda lista, o segundo elemento da primeira lista com o segundo elemento da segunda lista, e assim por diante. Por fim, a linha 12 realiza a operação de divisão dos elementos entre as listas. A operação matemática da linha 12 divide o primeiro elemento da primeira lista pelo primeiro elemento da segunda lista, o segundo elemento da primeira lista pelo segundo elemento da segunda lista, e assim por diante. As operações de soma e multiplicação merecem uma atenção especial. Nesse caso, como as listas foram criadas com o método array() da biblioteca numpy, os sinais de adição “+” e de multiplicação “*” realizam as operações matemáticas de soma e multiplicação entre os elementos das listas. Criando gráficos a partir de listas Segundo Downey (2016), na linguagem de programação Python, as listas podem armazenar diversos dados, como o número de vendas mensal de uma loja de departamentos, a quantidade de acessos diários a um site na internet, o crescimento populacional em um país, o índice de criminalidade de uma região da cidade, entre outros elementos. Então, as listas podem ser utilizadas para gerar gráficos, que são utilizados frequentemente para exibir visualmente os dados brutos ou os valores numéricos armazenados nas listas e, assim, facilitar a interpretação dessas informações. Em Python, a biblioteca matplotlib permite trabalhar com as informa- ções registradas em listas e transformá-las em gráficos. A Figura 12 mostra um código que cria um gráfico a partir de dados armazenados em duas listas. Criação, acesso e operadores de listas (Python)16 Identificação interna do documento Figura 12. (a) Código com a biblioteca matplotlib para trabalhar com listas. (b) Resultado da execução do código. (b)(a) Na Figura 12a, é possível observar na linha 2 a importação da biblioteca matplotlib. Nas linhas 4 e 5, tem-se a criação das listas, que representarão os eixos x (horizontal) e y (vertical) do gráfico. Na linha 7, o comando plt. plot() cria o gráfico e o armazena na memória do computador. Nas linhas 9, 10 e 11, os elementos textuais (título, rótulo do eixo horizontal e rótulo do eixo vertical) do gráfico são inseridos no mesmo. Na linha 13, o comando plt.grid() mostra as linhas de grade do gráfico. Por fim, o comando plt. show() da linha 15 mostra o gráfico na tela do computador. O resultado da execução do código é mostrado na Figura 12b. 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). DOWNEY, A. B. Pense em Python: pense como um cientista da computação. São Paulo: Novatec, 2016. 312 p. 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. 17Criação, acesso e operadores de listas (Python) Identificação interna do documento 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. Leituras recomendadas BANIN, S. L. Tipos de estruturados sequenciais em Python. In: BANIN, S. L. Python 3: conceitos e aplicações: uma abordagem didática. São Paulo: Érica, 2018. cap. 4. BORGES, L. E. Python para desenvolvedores: aborda Python 3.3. São Paulo: Novatec, 2014. MATPLOTLIB: Python plotting. The Matplotlib development team, [S. l.], 2018. Disponível em: https://matplotlib.org/. Acesso em: 14 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: 14 jun. 2019. RAMALHO, L. Dados sequenciais. In: RAMALHO, L. Python fluente. São Paulo: Novatec, 2015. cap. 2. Criação, acesso e operadores de listas (Python)18 Identificação interna do documento Identificação interna do documento Identificação interna do documento