Olá, estudante, que bom que voltou! Fico feliz porque você já aprendeu sobre a linguagem Python: módulos, pacotes, funções built-in, métodos e funções, agora, chegou a vez de aprender como elaborar listagens. Nesta lição, exploraremos o conceito de elaboração de listagens em Python. O objetivo é compreender como criar, manipular e utilizar listas, uma estrutura de dados fundamental na linguagem. Elas são amplamente utilizadas para armazenar coleções de elementos e oferecem flexibilidade na organização e manipulação de informações.
Em programação, uma listagem, também conhecida como lista, é uma estrutura de dados que permite armazenar uma sequência ordenada de valores. Estes podem ser de qualquer tipo, incluindo números, strings, objetos e até mesmo outras listas. Elas fornecem uma maneira conveniente de agrupar elementos relacionados em uma única entidade.
Ao final desta lição, você terá uma compreensão sólida sobre a elaboração de listagens em Python e estará preparado(a) para usar essa estrutura de dados para armazenar e manipular informações de maneira eficiente e flexível. Vamos lá?
Imagine uma situação na qual uma escola precisa gerenciar as notas dos alunos de turmas em diferentes disciplinas. Cada aluno tem notas para várias avaliações, e a escola deseja calcular as médias de cada estudante em cada disciplina. O desafio é lidar com uma grande quantidade de informações e garantir que o processo de cálculo das médias seja eficiente e preciso. Ou seja, o problema é ter diversas turmas com diferentes números de alunos onde cada um deles tem várias notas em diferentes avaliações. Diante disso, surge uma questão: como fazer o cálculo das médias para cada aluno e disciplina?
Por causa desse cenário complexo, a escola decidiu utilizar listas em Python para resolver esse problema e lidar com a diversidade de informações. Cada turma é representada por uma lista de alunos, e cada aluno tem uma lista de notas para cada disciplina. Isso permite uma estrutura organizada destinada a armazenar e manipular as notas de maneira eficiente.
Com a utilização das listas em Python, a escola então consegue organizar, de forma estruturada, as notas dos estudantes. Com seu uso, a estrutura das listas facilita o acesso às informações de cada aluno. Agora, a escola consegue gerenciar as notas, calcular médias e produzir relatórios de maneira mais eficiente e precisa.
Dessa forma, este caso prático ilustra como o uso eficaz de listas em Python proporciona organização, flexibilidade e facilidade de acesso aos dados, permitindo à escola superar os desafios de gerenciamento de notas em um ambiente educacional complexo. Além disso, evidencia como a escolha desta abordagem contribui para melhorias significativas nos processos de gestão, destacando a aplicação prática de conceitos de programação no contexto educacional.
Nesta lição, lhe apresentarei um case de uma equipe de desenvolvedores que está trabalhando em um aplicativo de gerenciamento de tarefas chamado TaskBuddy. O objetivo é criar uma plataforma onde os usuários possam criar, organizar e acompanhar suas tarefas diárias, projetos e metas. A equipe enfrenta o desafio de lidar com a variedade de tarefas e projetos que os usuários costumam ter e garantir a eles uma experiência eficiente e organizada.
Nesta situação, os principais desafios da empresa eram:
Os usuários precisam criar e organizar diferentes tipos de tarefas.
As tarefas variam em termos de prioridade, data de vencimento e status.
A equipe precisa fornecer uma interface amigável para visualizar e gerenciar todas as tarefas.
Diante disso, a equipe decide usar listas em Python para organizar as tarefas e informações dos usuários. Cada usuário terá sua própria lista de tarefas em que cada tarefa será representada como um dicionário e conterá detalhes como título, descrição, prioridade, data de vencimento e status. A lista global de usuários permitirá gerenciar, de maneira eficiente, várias listas de tarefas.
Com a utilização de listas em Python, o aplicativo TaskBuddy é capaz de armazenar e organizar eficientemente as tarefas de cada usuário. Por um lado, a equipe consegue adicionar, listar e manipular as tarefas de forma clara e organizada, por outro lado, os usuários podem visualizar suas tarefas de maneira conveniente, e a equipe, expandir a funcionalidade do aplicativo com base na estrutura de listas.
Portanto, por meio desse case, mesmo ele sendo fictício, conseguimos entender a questão da flexibilidade da estrutura de listas e enxergar uma situação na qual temos a aplicação do conteúdo que você aprenderá hoje!
Uma lista pode ser compreendida como uma coleção ordenada de elementos, onde cada elemento é qualquer tipo de dado, como números, strings ou objetos mais complexos. Segundo Szwarcfiter e Markenzon (2020), dentre as estruturas de dados não primitivas, as listas lineares são as de manipulação mais simples, pois agrupam informações referentes a um conjunto de elementos que, de alguma forma, se relacionam entre si.
As listas são uma estrutura de dados versátil e amplamente utilizada em programação para lidar com coleções de dados de várias formas. Elas desempenham um papel fundamental em muitos algoritmos e são uma das estruturas de dados mais básicas e importantes em computação.
A relação entre a estrutura de dados lista e a linguagem de programação Python é muito próxima, uma vez que as listas são uma estrutura de dados fundamental e integrante da linguagem Python, e esta oferece suporte nativo às listas, tornando-as uma estrutura de dados extremamente flexível e versátil na linguagem.
Segundo Szwarcfiter e Markenzon (2020), as operações mais frequentes em listas são a busca por elementos, a inclusão e a remoção de determinado elemento, o que, aliás, ocorre na maioria das estruturas de dados. Essas operações podem ser consideradas básicas e, por esta razão, é necessário que os algoritmos que as implementem sejam eficientes.
Além dessas operações, também mencionaremos a questão da alteração de um elemento da lista e sua combinação com outra lista, ou seja, a combinação de duas ou mais listas dentre uma série de outras operações. Mas, nesse momento, focaremos nas mais básicas e usuais.
O acesso a elementos de uma lista em Python é feito por meio de índices. Cada elemento em uma lista possui um índice que o identifica, e você pode usá-lo para recuperar o valor do elemento específico que deseja. Em Python, existem algumas maneiras de acessar elementos de uma lista, conforme mostraremos, a seguir:
Acesso por índice positivo: os índices positivos são usados para acessar elementos a partir do início da lista. O primeiro elemento tem índice 0, o segundo tem índice 1 e assim por diante, conforme ilustrado na Figura 1, a seguir:
Acesso por índice negativo: os índices negativos são usados para acessar elementos a partir do final da lista. O último elemento tem índice -1, o penúltimo tem índice -2 e assim por diante, conforme ilustrado na Figura 2, a seguir:
Fatiamento (slicing): você também pode acessar um subconjunto de elementos em uma lista usando a técnica de fatiamento. Isso envolve especificar um intervalo de índices, o que permite acessar vários elementos de uma vez, conforme ilustrado na Figura 3, a seguir:
Observe que o intervalo [1:4] inclui o elemento com índice 1 (20) e exclui o elemento com índice 4 (50).
Lembre-se de que, ao acessar elementos de uma lista, é importante garantir que o índice especificado esteja dentro dos limites dela. Caso contrário, você obterá um erro de “IndexError” se tentar acessar um índice que não existe na lista.
Agora, você verá uma relação das principais funções e métodos integrados em listas. Essa relação segue o modo como essas listas, usando a linguagem de programação Python, são implementadas:
Cria uma lista vazia ou com elementos iniciais.
lista_vazia = []
lista_com_elementos = [1, 2, 3, 4, 5]
Adiciona elementos ao final da lista. No exemplo a seguir, o comando append() adiciona o elemento 4 ao final da lista.
lista = [1, 2, 3]
lista.append(4)
Insere elementos em uma posição específica da lista. No exemplo a seguir, o comando insert() insere o elemento 4 na posição 1 (deslocando os elementos subsequentes).
lista = [1, 2, 3]
lista.insert(1, 4)
Remove elementos da lista. No exemplo a seguir, o comando remove() remove o elemento 3 da lista.
lista = [1, 2, 3, 4, 5]
lista.remove(3)
Modifica o valor de um elemento na lista. No exemplo a seguir, atualiza o segundo elemento para 4.
lista = [1, 2, 3]
lista[1] = 4
Encontra o número de elementos da lista. No exemplo a seguir, o comando len() retorna 5, o tamanho da lista.
lista = [1, 2, 3, 4, 5]
tamanho = len(lista)
Classifica os elementos da lista em ordem crescente ou decrescente. No exemplo a seguir, o comando sort() classifica a lista em ordem crescente.
lista = [3, 1, 4, 2, 5]
lista.sort()
Inverte a ordem dos elementos na lista. No exemplo a seguir, o comando reverse() inverte a ordem para [3, 2, 1].
lista = [1, 2, 3]
lista.reverse()
Estas foram algumas funções e métodos integrados em lista que a linguagem de programação Python nos disponibiliza. Essa linguagem oferece ampla gama de métodos e funções incorporadas que permitem manipular listas de forma eficaz e flexível, facilitando o trabalho com conjuntos de dados em programas Python.
Outro conceito muito utilizado é o conceito das listas aninhadas que são listas contidas dentro de outras. Em outras palavras, uma lista aninhada é aquela cujos elementos são, por si só, outras listas. Esta estrutura de dados permite criar estruturas de dados multidimensionais, o que é útil para lidar com dados complexos e organizados de maneira hierárquica.
Aqui, cada elemento da lista externa pode ser uma lista por si só, e essas listas internas podem conter outros elementos, incluindo outras listas aninhadas. Isso cria uma estrutura de árvore ou matriz, onde você acessa elementos em diferentes níveis de profundidade.
A linha lista_aninhada = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] cria uma lista aninhada cuja lista externa possui 3 elementos que, por si só, são listas também. Para acessar os elementos, é possível usar índices duplos, por exemplo: lista_aninhada[0][1]
A iteração sobre listas em Python é feita usando, principalmente, loops, cujo loop for é a abordagem mais comum e eficaz. Na sequência, acompanhe as maneiras de iterar sobre uma lista em Python:
O loop iterará uma vez para cada elemento na lista, executando um bloco de código para cada elemento, como no exemplo, a seguir:
minha_lista = [10, 20, 30, 40, 50]
for elemento in minha_lista: print(elemento)
Você pode usar a função enumerate() para obter tanto os índices quanto os elementos durante a iteração.
minha_lista = [10, 20, 30]
for indice, elemento in enumerate(minha_lista): print(f”Índice {indice}: {elemento}”)
Você também pode usar a função range() para criar um índice enquanto itera sobre uma lista.
minha_lista = [10, 20, 30]
for i in range(len(minha_lista)): print(minha_lista[i])
Em resumo, a iteração sobre listas em Python é uma tarefa comum e versátil, possível de ser realizada de várias maneiras, dependendo dos requisitos específicos do seu programa. O loop for é a abordagem mais comum, recomendado quando você deseja simplesmente percorrer todos os elementos de uma lista.
Agora, chegou a sua vez de colocar os seus conhecimentos em prática e criar as funções do case desta lição. Primeiro, você acesse o ambiente para codificar, neste caso, usaremos o site OnlineGDB (clique aqui). Com o site aberto, selecione, no canto superior direito, na opção Language, a linguagem de programação Python 3.
Selecione todo o código que vem automaticamente no arquivo main.py e digite o seguinte código, conforme a Figura 4:
O funcionamento do código da Figura 4 possui o seguinte fluxo:
Linhas 1 a 3: declaração de 3 listas, sendo a primeira de números inteiros, a segunda, de nomes (string), e a terceira, com dados variados.
Linhas 5 a 7: exibe na tela os conteúdos de cada lista, usando sua posição para tal.
Linhas 9 a 11: insere novos valores em cada uma das listas.
Linhas 13 a 15: exibe novamente as 3 listas, para mostrar que novos dados foram inseridos.
Linhas 17 a 19: remove elementos de cada uma das 3 listas.
Linhas 21 a 23: exibe novamente as 3 listas, para mostrar que dados foram removidos.
O conhecimento sobre a elaboração de listagens em Python é fundamental para técnicos em desenvolvimento de sistemas por diversos motivos. Vamos conhecer alguns?
As listas são uma estrutura de dados essencial em Python, pois oferecem flexibilidade e versatilidade no armazenamento e organização de dados de diferentes tipos, sendo assim, dominar a criação e manipulação de listas possibilita que os técnicos realizem operações eficientes, como adição, remoção e ordenação de elementos, especialmente ao lidarem com grandes conjuntos de dados em sistemas complexos. Portanto, a capacidade de elaborar listagens em Python é uma competência essencial que capacita os técnicos em desenvolvimento de sistemas a criar algoritmos eficazes, desenvolver soluções robustas e enfrentar, de forma eficiente, os desafios do desenvolvimento de software!
SZWARCFITER, J. J.; MARKENZON, L. Estruturas de dados e seus algoritmos. 3. ed. Rio de Janeiro: LTC, 2020.