Python List
Durante o desenvolvimento de software, independentemente de plataforma e linguagem, é comum a necessidade de lidar com listas. Por exemplo, elas podem ser empregadas para armazenar contatos telefônicos ou tarefas.
Uma lista é uma estrutura de dados composta por itens organizados de forma linear, na qual cada um pode ser acessado a partir de um índice, que representa sua posição na coleção (iniciando em zero).
Saiba mais: Curso de Python
Neste artigo vamos aprender a trabalhar com listas em Python, linguagem na qual essa estrutura de dados pode armazenar, inclusive simultaneamente, objetos de diferentes tipos, como strings, números e até mesmo outras listas.
Criando listas
Em Python, uma lista é representada como uma sequência de objetos separados por vírgula e dentro de colchetes [], assim, uma lista vazia, por exemplo, pode ser representada por colchetes sem nenhum conteúdo. A Listagem 1 mostra algumas possibilidades de criação desse tipo de objeto.
01 >>> lista = []
02 >>> lista
03 []
04 >>> lista = ['O carro','peixe',123,111]
05 >>> lista
06 ['O carro', 'peixe', 123, 111]
07 >>> nova_lista = ['pedra',lista]
08 >>> nova_lista
09 ['pedra', ['O carro', 'peixe', 123, 111]]
Linhas 1 a 3: Declaração de uma lista sem nenhum elemento e sua impressão, que apresenta apenas os colchetes, indicando que a lista está vazia;
Linhas 4 a 6: Atribuição de duas strings e dois inteiros à variável lista e sua posterior impressão;
Linhas 7 a 9: Criação e impressão da variável nova_lista, que é inicializada com a string 'pedra', e uma outra lista.
As possibilidades de declaração e atribuição de valores a uma lista são várias, e a opção por uma ou outra dependerá do contexto e aplicação.
Operadores de lista
A linguagem Python dispõe de vários métodos e operadores para auxiliar na manipulação de listas. O primeiro e mais básico é o operador de acesso aos seus itens a partir dos índices. Para compreendê-lo, é importante entender como os dados são armazenados nessa estrutura, o que é ilustrado na Figura 1.
A lista representada nessa figura é composta por quatro elementos, cujos índices variam de zero a três. Por exemplo, o primeiro objeto, no índice 0, é a string 'O carro'. Tendo em mente essa organização interna, podemos acessar cada um dos elementos utilizando a sintaxe lista[índice], como mostra a Listagem 2.
01 >>> lista[0]
02 'O carro'
03 >>> lista[2]
04 123
05 >>> nova_lista[0]
06 'pedra'
07 >>> nova_lista[1]
08 ['O carro azul', 'peixe', 123, 111]
09 >>> nova_lista[1][2]
10 123
Linhas 1 a 8: Acessamos os elementos contidos em determinados índices das variáveis lista e nova_lista, que são strings (linhas 2 e 6), valores numéricos (linha 4) e uma lista interna (linha 8);
Linhas 9 e 10: Acessamos um elemento da lista interna contida na posição 1 da variável nova_lista. Perceba que como esse índice aponta para uma outra lista, é possível acessar seus elementos utilizando a mesma sintaxe.
Comprimento de uma lista
O comprimento de uma lista, ou o número de itens que a compõem, pode ser obtido a partir da função len(), como mostra o código abaixo, em que é impresso o valor 2, indicando que a variável nova_lista contém 2 elementos.
01 >>> len(nova_lista)
02 2
Concatenação e multiplicação
Também é possível concatenar listas por meio do operador de adição + e multiplicá-las por um inteiro, o que gerará várias cópias dos seus itens. O código a seguir traz alguns exemplos dessas operações:
01 >>> lista+nova_lista
02 ['O carro azul', 'peixe', 123, 111, 'pedra', ['O carro azul', 'peixe', 123, 111]]
03 >>> lista*3
04 ['O carro azul', 'peixe', 123, 111, 'O carro azul',
'peixe', 123, 111, 'O carro azul', 'peixe', 123, 111]
Linhas 1 e 2: Concatenação de duas listas (lista+nova_lista), seguida da impressão do resultado, que contém os itens das duas variáveis;
Linhas 3 e 4: Multiplicação da variável lista por 3, e impressão do resultado, com os itens repetidos três vezes.
Verificando a existência de itens em uma lista
Em alguns casos é preciso verificar se um determinado valor está contido em uma lista. Para isso, em Python utilizamos o operador in, que indicará True se objeto pertencer ao conjunto, e False caso contrário. No código a seguir temos exemplos de uso desse operador:
01 >>> 'peixe' in lista
02 True
03 >>> 'gato' in lista
04 False
Valores mínimos, máximos e soma
O Python oferece ainda as funções min(), max() e sum(), através das quais é possível encontrar, respectivamente, o menor valor, o maior valor ou ainda realizar a soma de todos os elementos da lista. Na Listagem 3 podemos ver como utilizá-las.
01 >>> numeros = [14.55, 67, 89.88, 10, 21.5]
02 >>> min(numeros)
03 10
04 >>> max(numeros)
05 89.88
06 >>> sum(numeros)
07 202.93
Métodos das listas
Nas seções anteriores, vimos os operadores e funções que recebem uma lista como argumento, retornam um resultado, mas não efetuam alterações na sua estrutura. A partir de agora veremos métodos pertencentes ao tipo lista, e que nos permitem incluir ou remover elementos, bem como classificar as coleções.
O primeiro método a ser analisado é o append(), que tem por objetivo adicionar um novo elemento no final da lista, conforme mostra o código abaixo:
01 >>> livros = ['Java','SqlServer', 'Delphi','Python']
02 >>> livros.append('Android')
03 >>> livros
04 ['Java', 'SqlServer', 'Delphi', 'Python', 'Android']
Após criar, na primeira linha, uma lista com um conjunto de valores, adicionamos a ela um novo item: “Android”. Como podemos ver na linha 4, o elemento é adicionado após o último item. Caso desejemos fazer essa inserção em uma posição específica, podemos utilizar o método insert() que, além do elemento a ser inserido, recebe também o índice que ele deve assumir, como mostra o código abaixo:
01 >>> livros = ['Java', 'SqlServer', 'Delphi', 'Python', 'Android']
02 >>> livros.insert(0,'Oracle')
03 >>> livros
04 ['Oracle', 'Java', 'SqlServer', 'Delphi', 'Python', 'Android']
O próximo método importante é o pop(), que remove o último item da lista e o retorna como resultado da operação. Caso seja necessário remover um índice específico, basta informá-lo como argumento. Na Listagem 4 temos alguns exemplos de uso.
01 >>> livros
02 ['Java', 'SqlServer', 'Delphi', 'Python', 'Android']
03 >>> livros.pop()
04 'Android'
05 >>> livros.pop(1)
06 'SqlServer'
07 >>> livros
08 ['Java', 'Python', 'Delphi']
Na linha 3 removemos o último elemento, ou seja, a string “Android”, já na linha 5 removemos o item na posição 1 (o segundo item). Nos dois casos, a remoção foi feita com base na posição do objeto, porém, há situações em que esse índice é desconhecido e desejamos remover o item a partir do seu valor. Para isso temos o método remove(item) que, conforme mostra a Listagem 5, remove a primeira ocorrência do item passado como parâmetro.
01 >>> livros
02 ['Oracle', 'Java', 'SqlServer', 'Delphi', 'Python', 'Android', 'Oracle']
03 >>> livros.remove('Oracle')
04 >>> livros
05 ['Java', 'SqlServer', 'Delphi', 'Python', 'Android', 'Oracle']
06 >>> livros.remove('Oracle')
07 >>> livros
08 ['Java', 'SqlServer', 'Delphi', 'Python', 'Android']
09 >>> livros.remove('Oracle')
10 Traceback (most recent call last):
11 File "<pyshell#34>", line 1, in <module>
12 livros.remove('Oracle')
13 ValueError: list.remove(x): x not in list
Linhas 1 e 2: Verificamos o conteúdo da variável livros, que contém duas ocorrências da string “Oracle”;
Linha 3: Removemos a primeira ocorrência de “Oracle”, ou seja, aquela do índice 0;
Linhas 4 e 5: Imprimimos o valor da variável livros, que agora possui um elemento a menos e mantém o item “Oracle” na última posição;
Linha 6: Removemos novamente a primeira ocorrência da string “Oracle”, que agora é o último item;
Linhas 7 e 8: Imprimimos novamente a lista, que agora não mais contém “Oracle” entre seus itens;
Linha 9: Tentamos excluir novamente o item “Oracle”, que não mais existe na coleção;
Linhas 10 a 13: Um erro ocorre, informando que o item passado por parâmetro não existe na lista livros.
Outros métodos muito importantes ao trabalhar com listas são o sort(), que ordena a lista, e o reverse(), que inverte as posições dos itens. No caso da ordenação, ela será feita em ordem crescente para números e em ordem lexicográfica para strings, ou seja, na forma como são ordenadas no dicionário. A Listagem 6 traz alguns exemplos de uso desses métodos.
01 >>> livros
02 ['Java', 'SqlServer', 'Delphi', 'Python', 'Android']
03 >>> livros.reverse()
04 >>> livros
05 ['Android', 'Python', 'Delphi', 'SqlServer', 'Java']
06 >>> livros.sort()
07 >>> livros
08 ['Android', 'Delphi', 'Java', 'Python', 'SqlServer']
Por fim, temos ainda o método count(), que retorna o número de ocorrências de determinado objeto, passado como parâmetro, em uma lista. Na Listagem 7 podemos ver seu funcionamento.
01 >>> livros = ['Oracle', 'Java', 'SqlServer', 'Delphi', 'Python', 'Android', 'Oracle']
02 >>> livros.count('Python')
03 1
04 >>> livros.count('Oracle')
05 2
Nesse exemplo, identificamos que há apenas uma ocorrência da string Python, ao passo que, na linha 5, vemos que o termo “Oracle” aparece duas vezes na lista.
O uso de listas é bastante comum em diversos tipos de aplicação, portanto é fundamental saber lidar com essa estrutura, utilizando para isso os diversos recursos oferecidos pela linguagem.