Introdução
A list is a data structure in Python that is a mutable, or changeable, ordered sequence of elements. Each element or value that is inside of a list is called an item. Just as strings are defined as characters between quotes, lists are defined by having values between square brackets [ ]
.
Listas são ótimas para usar quando você deseja trabalhar com muitos valores relacionados. Elas permitem que você mantenha os dados juntos que pertencem juntos, condense seu código e execute os mesmos métodos e operações em vários valores de uma vez.
Ao pensar sobre listas em Python e outras estruturas de dados que são tipos de coleções, é útil considerar todas as diferentes coleções que você tem em seu computador: sua variedade de arquivos, suas listas de reprodução de músicas, seus favoritos do navegador, seus e-mails, a coleção de vídeos aos quais você pode acessar em um serviço de streaming e muito mais.
Pré-requisitos
Você deve ter o Python 3 instalado e um ambiente de programação configurado em seu computador ou servidor. Se você não tiver um ambiente de programação configurado, pode consultar os guias de instalação e configuração para um ambiente de programação local ou para um ambiente de programação em seu servidor apropriado para seu sistema operacional (Ubuntu, CentOS, Debian, etc.).
Listas de Strings
Para começar, vamos criar uma lista que contenha itens do tipo de dados string:
Informação: Para acompanhar o código de exemplo neste tutorial, abra um shell interativo do Python em seu sistema local executando o comando python3
. Então você pode copiar, colar ou editar os exemplos adicionando-os após o prompt >>>
.
Quando imprimimos a lista, a saída responde exatamente como a lista que criamos:
Output['shark', 'cuttlefish', 'squid', 'mantis shrimp', 'anemone']
Como uma sequência ordenada de elementos, cada item em uma lista pode ser chamado individualmente, por meio de indexação. Listas são um tipo de dados composto por partes menores e são muito flexíveis porque podem ter valores adicionados, removidos e alterados. Quando você precisa armazenar muitos valores ou iterar sobre valores, e deseja poder modificar esses valores prontamente, provavelmente desejará trabalhar com tipos de dados de lista.
Neste tutorial, vamos passar por algumas das maneiras que podemos trabalhar com listas em Python.
Indexando Listas
Cada item em uma lista corresponde a um número de índice, que é um valor inteiro, começando com o número de índice 0
.
Para a lista sea_creatures
, a divisão do índice parece assim:
‘shark’ | ‘cuttlefish’ | ‘squid’ | ‘mantis shrimp’ | ‘anemone’ |
---|---|---|---|---|
0 | 1 | 2 | 3 | 4 |
O primeiro item, a string 'shark'
começa no índice 0
, e a lista termina no índice 4
com o item 'anemone'
.
Porque cada item em uma lista Python tem um número de índice correspondente, somos capazes de acessar e manipular listas da mesma forma que podemos com outros tipos de dados sequenciais.
Agora podemos chamar um item discreto da lista referindo-se ao seu número de índice:
Outputcuttlefish
Os números de índice para esta lista variam de 0
a 4
, como mostrado na tabela acima. Então, para chamar qualquer um dos itens individualmente, nós nos referiríamos aos números de índice assim:
Se chamarmos a lista sea_creatures
com um número de índice maior que 4, estará fora do alcance, pois não será válido:
OutputIndexError: list index out of range
Além dos números de índice positivos, também podemos acessar itens da lista com um número de índice negativo, contando de trás para frente a partir do final da lista, começando em -1
. Isso é especialmente útil se tivermos uma lista longa e quisermos identificar um item no final de uma lista.
Para a mesma lista sea_creatures
, a decomposição de índice negativo fica assim:
‘shark’ | ‘cuttlefish’ | ‘squid’ | ‘mantis shrimp’ | ‘anemone’ |
---|---|---|---|---|
-5 | -4 | -3 | -2 | -1 |
Então, se quisermos imprimir o item 'squid'
usando seu número de índice negativo, podemos fazer isso assim:
Outputsquid
Podemos concatenar itens de string em uma lista com outras strings usando o operador +
:
OutputSammy is a shark
Fomos capazes de concatenar o item de string no índice número 0
com a string 'Sammy é um '
. Também podemos usar o operador +
para concatenar 2 ou mais listas juntas.
Com números de índice que correspondem a itens dentro de uma lista, somos capazes de acessar cada item de uma lista discretamente e trabalhar com esses itens.
Modificando Itens em Listas
Podemos usar a indexação para alterar itens dentro da lista, definindo um número de índice igual a um valor diferente. Isso nos dá maior controle sobre listas, pois somos capazes de modificar e atualizar os itens que elas contêm.
Se quisermos alterar o valor da string do item no índice 1
de 'lula'
para 'polvo'
, podemos fazer assim:
Agora, quando imprimirmos criaturas_marinhas
, a lista será diferente:
Output['shark', 'octopus', 'squid', 'mantis shrimp', 'anemone']
Também podemos alterar o valor de um item usando um número de índice negativo em vez disso:
Output['shark', 'octopus', 'blobfish', 'mantis shrimp', 'anemone']
Agora 'peixe-gota'
substituiu 'lula'
no número de índice negativo de -3
(que corresponde ao número de índice positivo de 2
).
Ser capaz de modificar itens em listas nos dá a habilidade de alterar e atualizar listas de forma eficiente.
Fatiamento de Listas
Também podemos chamar alguns itens da lista. Digamos que queremos imprimir apenas os itens do meio de sea_creatures
, podemos fazer isso criando uma fatiamento. Com fatiamentos, podemos chamar vários valores criando uma faixa de números de índice separados por dois pontos [x:y]
:
Output['octopus', 'blobfish', 'mantis shrimp']
Ao criar um fatiamento, como em [1:4]
, o primeiro número de índice é onde o fatiamento começa (inclusive), e o segundo número de índice é onde o fatiamento termina (exclusivo), por isso, em nosso exemplo acima, os itens nas posições 1
, 2
e 3
são os itens que são impressos.
Se quisermos incluir qualquer um dos extremos da lista, podemos omitir um dos números na sintaxe lista[x:y]
. Por exemplo, se quisermos imprimir os primeiros 3 itens da lista sea_creatures
— que seriam 'tubarão'
, 'polvo'
, 'peixe-bolha'
— podemos fazer isso digitando:
Output['shark', 'octopus', 'blobfish']
Isso imprimiu o início da lista, parando imediatamente antes do índice 3
.
Para incluir todos os itens no final de uma lista, inverteríamos a sintaxe:
Output['blobfish', 'mantis shrimp', 'anemone']
Também podemos usar números de índice negativos ao fatiar listas, semelhante aos números de índice positivos:
Output['octopus', 'blobfish']
['blobfish', 'mantis shrimp', 'anemone']
Um último parâmetro que podemos usar com fatiamento é chamado de passo, que se refere a quantos itens avançar após o primeiro item ser recuperado da lista. Até agora, omitimos o parâmetro de passo, e o Python assume o padrão de passo 1, de modo que cada item entre dois números de índice é recuperado.
A sintaxe para esta construção é lista[x:y:z]
, com z
referindo-se ao passo. Vamos criar uma lista maior, em seguida, fatiá-la e atribuir ao passo o valor de 2:
Output[1, 3, 5, 7, 9]
Nossa construção numeros[1:11:2]
imprime os valores entre os números de índice inclusivo de 1
e exclusivo de 11
, então o valor de passo de 2
diz ao programa para imprimir apenas a cada outro item.
Podemos omitir os dois primeiros parâmetros e usar apenas o passo como parâmetro com a sintaxe lista[::z]
:
Output[0, 3, 6, 9, 12]
Ao imprimir a lista numeros
com o passo definido como 3
, apenas a cada terceiro item é impresso:
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12
Fatiar listas com números de índice positivos e negativos e indicar o passo nos proporciona o controle para manipular listas e receber a saída que estamos tentando alcançar.
Modificando Listas com Operadores
Os operadores podem ser usados para fazer modificações em listas. Vamos revisar o uso dos operadores +
e *
e suas formas compostas +=
e *=
.
O operador +
pode ser usado para concatenar duas ou mais listas juntas:
Output['shark', 'octopus', 'blobfish', 'mantis shrimp', 'anemone', 'Pacific', 'Atlantic', 'Indian', 'Southern', 'Arctic']
Porque o operador +
pode concatenar, ele pode ser usado para adicionar um item (ou vários) em forma de lista ao final de outra lista. Lembre-se de colocar o item entre colchetes:
Output['shark', 'octopus', 'blobfish', 'mantis shrimp', 'anemone', 'yeti crab']
O operador *
pode ser usado para multiplicar listas. Talvez você precise fazer cópias de todos os arquivos em um diretório em um servidor, ou compartilhar uma lista de reprodução com amigos – nestes casos, você precisaria multiplicar coleções de dados.
Vamos multiplicar a lista sea_creatures
por 2 e a lista oceans
por 3:
Output['shark', 'octopus', 'blobfish', 'mantis shrimp', 'anemone', 'yeti crab', 'shark', 'octopus', 'blobfish', 'mantis shrimp', 'anemone', 'yeti crab']
['Pacific', 'Atlantic', 'Indian', 'Southern', 'Arctic', 'Pacific', 'Atlantic', 'Indian', 'Southern', 'Arctic', 'Pacific', 'Atlantic', 'Indian', 'Southern', 'Arctic']
Usando o operador *
, podemos replicar nossas listas pelo número de vezes que especificamos.
Também podemos usar formas compostas dos operadores +
e *
com o operador de atribuição =
. Os operadores compostos +=
e *=
podem ser usados para preencher listas de forma rápida e automatizada. Você pode usar esses operadores para preencher listas com espaços reservados que podem ser modificados posteriormente com entrada fornecida pelo usuário, por exemplo.
Vamos adicionar um item em forma de lista à lista sea_creatures
. Este item atuará como um espaço reservado, e gostaríamos de adicionar este item de espaço reservado várias vezes. Para fazer isso, vamos usar o operador +=
com um loop for.
Output['shark', 'octopus', 'blobfish', 'mantis shrimp', 'anemone', 'yeti crab', 'fish']
['shark', 'octopus', 'blobfish', 'mantis shrimp', 'anemone', 'yeti crab', 'fish', 'fish']
['shark', 'octopus', 'blobfish', 'mantis shrimp', 'anemone', 'yeti crab', 'fish', 'fish', 'fish']
Para cada iteração do loop for, um item adicional de 'fish'
é adicionado à lista original sea_creatures
.
O operador *=
comporta-se de forma semelhante:
Output['shark', 'shark']
['shark', 'shark', 'shark', 'shark']
['shark', 'shark', 'shark', 'shark', 'shark', 'shark', 'shark', 'shark']
Os operadores +
e *
podem ser usados para concatenar listas e multiplicar listas. Os operadores compostos +=
e *=
podem concatenar listas e multiplicar listas e passar a nova identidade para a lista original.
Removendo um Item de uma Lista
Itens podem ser removidos de listas usando a instrução del
. Isso irá excluir o valor no número de índice que você especificar dentro de uma lista.
Da lista sea_creatures
, vamos remover o item 'octopus'
. Este item está localizado na posição do índice 1
. Para remover o item, usaremos a instrução del
e então chamaremos a variável da lista e o número do índice desse item:
Output['shark', 'blobfish', 'mantis shrimp', 'anemone', 'yeti crab']
Agora o item na posição do índice 1
, a string 'octopus'
, não está mais em nossa lista sea_creatures
.
Também podemos especificar um intervalo com a instrução del
. Digamos que queríamos remover não apenas o item 'octopus'
, mas também 'blobfish'
e 'mantis shrimp'
também. Podemos chamar um intervalo em sea_creatures
com a instrução del
para realizar isso:
Output['shark', 'anemone', 'yeti crab']
Ao usar um intervalo com a instrução del
, conseguimos remover os itens entre o número do índice 1
(inclusive) e o número do índice 4
(exclusivo), deixando-nos com uma lista de 3 itens após a remoção de 3 itens.
A instrução del
nos permite remover itens específicos do tipo de dado lista.
Construindo uma Lista com Itens de Lista
As listas podem ser definidas com itens que são compostos por listas, com cada lista entre colchetes sendo inserida dentro dos colchetes maiores da lista pai:
Essas listas dentro de listas são chamadas de listas aninhadas.
Para acessar um item dentro dessa lista, precisaremos usar múltiplos índices:
OutputSammy
shark
A primeira lista, sendo igual a um item, terá o número do índice 0, que será o primeiro número na construção, e a segunda lista terá o número do índice 1. Dentro de cada lista aninhada interna, haverá números de índice separados, que chamaremos de segundo número do índice:
sea_names[0][0] = 'shark'
sea_names[0][1] = 'octopus'
sea_names[0][2] = 'squid'
sea_names[0][3] = 'mantis shrimp'
sea_names[1][0] = 'Sammy'
sea_names[1][1] = 'Jesse'
sea_names[1][2] = 'Drew'
sea_names[1][3] = 'Jamie'
Ao trabalhar com listas de listas, é importante ter em mente que você precisará se referir a mais de um número de índice para acessar itens específicos dentro da lista aninhada relevante.
Conclusão
O tipo de dados lista é um tipo de dados flexível que pode ser modificado ao longo do curso do seu programa. Este tutorial cobriu os recursos básicos das listas, incluindo indexação, fatiamento, modificação e concatenação de listas.
A partir daqui, você pode descobrir mais sobre como trabalhar com listas em Python lendo “Como Usar Métodos de Lista”, e sobre compreensões de lista para criar listas com base em listas existentes. Para aprender mais sobre tipos de dados em geral, você pode ler nosso tutorial “Compreendendo Tipos de Dados”.
Source:
https://www.digitalocean.com/community/tutorials/understanding-lists-in-python-3