Introdução
Esta seção introduz listas, o tipo primário do Python para armazenar uma coleção ordenada de valores.
This tutorial is from open-source community. Access the source code
Esta seção introduz listas, o tipo primário do Python para armazenar uma coleção ordenada de valores.
Use colchetes para definir um literal de lista:
names = [ 'Elwood', 'Jake', 'Curtis' ]
nums = [ 39, 38, 42, 65, 111]
Às vezes, as listas são criadas por outros métodos. Por exemplo, uma string pode ser dividida em uma lista usando o método split():
>>> line = 'GOOG,100,490.10'
>>> row = line.split(',')
>>> row
['GOOG', '100', '490.10']
>>>
Listas podem conter itens de qualquer tipo. Adicione um novo item usando append():
names.append('Murphy') ## Adiciona ao final
names.insert(2, 'Aretha') ## Insere no meio
Use + para concatenar listas:
s = [1, 2, 3]
t = ['a', 'b']
s + t ## [1, 2, 3, 'a', 'b']
Listas são indexadas por inteiros, começando em 0.
names = [ 'Elwood', 'Jake', 'Curtis' ]
names[0] ## 'Elwood'
names[1] ## 'Jake'
names[2] ## 'Curtis'
Índices negativos contam do final.
names[-1] ## 'Curtis'
Você pode alterar qualquer item em uma lista.
names[1] = 'Joliet Jake'
names ## [ 'Elwood', 'Joliet Jake', 'Curtis' ]
Comprimento da lista.
names = ['Elwood','Jake','Curtis']
len(names) ## 3
Teste de pertinência (in, not in).
'Elwood' in names ## True
'Britney' not in names ## True
Replicação (s * n).
s = [1, 2, 3]
s * 3 ## [1, 2, 3, 1, 2, 3, 1, 2, 3]
Use for para iterar sobre o conteúdo da lista.
for name in names:
## use name
## e.g. print(name)
...
Isso é similar a uma instrução foreach de outras linguagens de programação.
Para encontrar a posição de algo rapidamente, use index().
names = ['Elwood','Jake','Curtis']
names.index('Curtis') ## 2
Se o elemento estiver presente mais de uma vez, index() retornará o índice da primeira ocorrência.
Se o elemento não for encontrado, isso irá levantar uma exceção ValueError.
Você pode remover itens por valor do elemento ou por índice:
## Using the value
names.remove('Curtis')
## Using the index
del names[1]
Remover um item não cria um buraco. Outros itens se moverão para baixo para preencher o espaço vago. Se houver mais de uma ocorrência do elemento, remove() removerá apenas a primeira ocorrência.
Listas podem ser ordenadas "in-place" (no local).
s = [10, 1, 7, 3]
s.sort() ## [1, 3, 7, 10]
## Reverse order
s = [10, 1, 7, 3]
s.sort(reverse=True) ## [10, 7, 3, 1]
## It works with any ordered data
s = ['foo', 'bar', 'spam']
s.sort() ## ['bar', 'foo', 'spam']
Use sorted() se você quiser criar uma nova lista em vez disso:
t = sorted(s) ## s unchanged, t holds sorted values
Atenção: Listas não foram projetadas para operações matemáticas.
>>> nums = [1, 2, 3, 4, 5]
>>> nums * 2
[1, 2, 3, 4, 5, 1, 2, 3, 4, 5]
>>> nums + [10, 11, 12, 13, 14]
[1, 2, 3, 4, 5, 10, 11, 12, 13, 14]
Especificamente, listas não representam vetores/matrizes como em MATLAB, Octave, R, etc. No entanto, existem alguns pacotes para ajudá-lo com isso (por exemplo, numpy).
Neste exercício, experimentamos com o tipo de dado lista do Python. Na última seção, você trabalhou com strings contendo símbolos de ações.
>>> symbols = 'HPQ,AAPL,IBM,MSFT,YHOO,DOA,GOOG'
Divida-o em uma lista de nomes usando a operação split() de strings:
>>> symlist = symbols.split(',')
Experimente algumas pesquisas:
>>> symlist[0]
'HPQ'
>>> symlist[1]
'AAPL'
>>> symlist[-1]
'GOOG'
>>> symlist[-2]
'DOA'
>>>
Tente reatribuir um valor:
>>> symlist[2] = 'AIG'
>>> symlist
['HPQ', 'AAPL', 'AIG', 'MSFT', 'YHOO', 'DOA', 'GOOG']
>>>
Pegue algumas fatias (slices):
>>> symlist[0:3]
['HPQ', 'AAPL', 'AIG']
>>> symlist[-2:]
['DOA', 'GOOG']
>>>
Crie uma lista vazia e adicione um item a ela.
>>> mysyms = []
>>> mysyms.append('GOOG')
>>> mysyms
['GOOG']
Você pode reatribuir uma porção de uma lista a outra lista. Por exemplo:
>>> symlist[-2:] = mysyms
>>> symlist
['HPQ', 'AAPL', 'AIG', 'MSFT', 'YHOO', 'GOOG']
>>>
Quando você faz isso, a lista no lado esquerdo (symlist) será redimensionada conforme apropriado para fazer o lado direito (mysyms) caber. Por exemplo, no exemplo acima, os dois últimos itens de symlist foram substituídos pelo único item na lista mysyms.
O loop for funciona iterando sobre dados em uma sequência, como uma lista. Verifique isso digitando o seguinte loop e observando o que acontece:
>>> for s in symlist:
print('s =', s)
## Veja a saída
Use o operador in ou not in para verificar se 'AIG', 'AA' e 'CAT' estão na lista de símbolos.
>>> ## 'AIG' está NA `symlist`?
True
>>> ## 'AA' está NA `symlist`?
False
>>> ## 'CAT' NÃO está NA `symlist`?
True
>>>
Use o método append() para adicionar o símbolo 'RHT' ao final de symlist.
>>> symlist.append('RHT') ## append 'RHT'
>>> symlist
['HPQ', 'AAPL', 'AIG', 'MSFT', 'YHOO', 'GOOG', 'RHT']
>>>
Use o método insert() para inserir o símbolo 'AA' como o segundo item na lista.
>>> symlist.insert(1, 'AA') ## Insert 'AA' as the second item in the list
>>> symlist
['HPQ', 'AA', 'AAPL', 'AIG', 'MSFT', 'YHOO', 'GOOG', 'RHT']
>>>
Use o método remove() para remover 'MSFT' da lista.
>>> symlist.remove('MSFT') ## Remove 'MSFT'
>>> symlist
['HPQ', 'AA', 'AAPL', 'AIG', 'YHOO', 'GOOG', 'RHT']
>>>
Adicione (Append) uma entrada duplicada para 'YHOO' ao final da lista.
Nota: é perfeitamente aceitável que uma lista tenha valores duplicados.
>>> symlist.append('YHOO') ## Append 'YHOO'
>>> symlist
['HPQ', 'AA', 'AAPL', 'AIG', 'YHOO', 'GOOG', 'RHT', 'YHOO']
>>>
Use o método index() para encontrar a primeira posição de 'YHOO' na lista.
>>> symlist.index('YHOO') ## Find the first index of 'YHOO'
4
>>> symlist[4]
'YHOO'
>>>
Conte quantas vezes 'YHOO' está na lista:
>>> symlist.count('YHOO')
2
>>>
Remova a primeira ocorrência de 'YHOO'.
>>> symlist.remove('YHOO') ## Remove first occurrence 'YHOO'
>>> symlist
['HPQ', 'AA', 'AAPL', 'AIG', 'GOOG', 'RHT', 'YHOO']
>>>
Só para você saber, não existe um método para encontrar ou remover todas as ocorrências de um item. No entanto, veremos uma maneira elegante de fazer isso na seção 2.
Quer ordenar uma lista? Use o método sort(). Experimente:
>>> symlist.sort()
>>> symlist
['AA', 'AAPL', 'AIG', 'GOOG', 'HPQ', 'RHT', 'YHOO']
>>>
Quer ordenar em ordem inversa? Experimente isto:
>>> symlist.sort(reverse=True)
>>> symlist
['YHOO', 'RHT', 'HPQ', 'GOOG', 'AIG', 'AAPL', 'AA']
>>>
Nota: Ordenar uma lista modifica seu conteúdo 'in-place' (no local). Ou seja, os elementos da lista são embaralhados, mas nenhuma nova lista é criada como resultado.
Quer pegar uma lista de strings e juntá-las em uma única string? Use o método join() de strings assim (nota: isso parece estranho no início).
>>> a = ','.join(symlist)
>>> a
'YHOO,RHT,HPQ,GOOG,AIG,AAPL,AA'
>>> b = ':'.join(symlist)
>>> b
'YHOO:RHT:HPQ:GOOG:AIG:AAPL:AA'
>>> c = ''.join(symlist)
>>> c
'YHOORHTHPQGOOGAIGAAPLAA'
>>>
Listas podem conter qualquer tipo de objeto, incluindo outras listas (por exemplo, listas aninhadas). Experimente:
>>> nums = [101, 102, 103]
>>> items = ['spam', symlist, nums]
>>> items
['spam', ['YHOO', 'RHT', 'HPQ', 'GOOG', 'AIG', 'AAPL', 'AA'], [101, 102, 103]]
Preste muita atenção à saída acima. items é uma lista com três elementos. O primeiro elemento é uma string, mas os outros dois elementos são listas.
Você pode acessar itens nas listas aninhadas usando múltiplas operações de indexação.
>>> items[0]
'spam'
>>> items[0][0]
's'
>>> items[1]
['YHOO', 'RHT', 'HPQ', 'GOOG', 'AIG', 'AAPL', 'AA']
>>> items[1][1]
'RHT'
>>> items[1][1][2]
'T'
>>> items[2]
[101, 102, 103]
>>> items[2][1]
102
>>>
Embora seja tecnicamente possível criar estruturas de lista muito complicadas, como regra geral, é preferível manter as coisas simples. Normalmente, as listas contêm itens que são todos do mesmo tipo de valor. Por exemplo, uma lista que consiste inteiramente em números ou uma lista de strings de texto. Misturar diferentes tipos de dados na mesma lista é frequentemente uma boa maneira de fazer sua cabeça explodir, por isso é melhor evitar.
Parabéns! Você concluiu o laboratório de Listas. Você pode praticar mais laboratórios no LabEx para aprimorar suas habilidades.