Pular para o conteúdo principal

18 Most Common Python List Questions

Discover how to create a list in Python, select list elements, the difference between append() and extend(), why to use NumPy and much more.
Atualizado 17 de set. de 2026  · 15 min lido

Explorar com IA

ChatGPTClaudePerplexity

The post will offer simple solutions, easy-to-follow and straightforward explanations and some tips and tricks that you can practice on the spot with the help of some interactive exercises!

Se você prefere aprender sobre listas em um formato de curso, vale a pena conferir nosso curso Intro to Python for Data Science, que tem um capítulo só sobre listas em Python.

Contexto

Listas são um tema cada vez mais popular tanto para quem está começando em Python quanto para quem já tem experiência na linguagem. Se acreditarmos nos resultados do Google Trends, o interesse de busca por esse tópico cresce ano após ano.

Se você costuma frequentar fóruns para responder ou fazer perguntas sobre programação em Python, como o Stack Overflow, o Quora ou o Reddit, provavelmente já sabe o motivo.

Muitas dúvidas sobre Python acabam nesses fóruns e continuam por lá, onde usuários marcam algumas como “duplicadas” ou “fixas”, dão upvotes e debatem a melhor solução com outras pessoas.

Com este post, a DataCamp quer ajudar você a encarar um tema específico: as perguntas mais frequentes sobre listas em Python — e de um jeito interativo!

O que é exatamente uma lista em Python?

Listas são uma das quatro estruturas de dados nativas do Python, junto com tuples, dicionários e sets. Elas servem para armazenar uma coleção ordenada de itens, que podem ser de tipos diferentes (embora, na prática, geralmente não sejam). Os elementos são separados por vírgulas e ficam entre colchetes. Como neste exemplo:

eyJsYW5ndWFnZSI6InB5dGhvbiIsInNhbXBsZSI6IiMgVGhlc2UgbGlzdCBlbGVtZW50cyBhcmUgYWxsIG9mIHRoZSBzYW1lIHR5cGVcbnpvbyA9IFsnYmVhcicsICdsaW9uJywgJ3BhbmRhJywgJ3plYnJhJ11cbnByaW50KHpvbylcblxuIyBCdXQgdGhlc2UgbGlzdCBlbGVtZW50cyBhcmUgbm90XG5iaWdnZXJab28gPSBbJ2JlYXInLCAnbGlvbicsICdwYW5kYScsICd6ZWJyYScsIFsnY2hpbXBhbnplZXMnLCAnZ29yaWxsYXMnLCAnb3Jhbmd1dGFucycsICdnaWJib25zJ11dXG5wcmludChiaWdnZXJab28pIn0=

Perceba que a segunda variável, biggerZoo, é uma lista semelhante à variável zoo. Mas biggerZoo também contém outra lista com diferentes tipos de macacos.

Como listas em Python guardam coleções ordenadas de itens ou objetos, dizemos que elas são tipos de sequência, porque se comportam como uma sequência. Strings e tuples também são tipos de sequência.

O que tem de especial nos tipos de sequência? Em palavras simples: o programa consegue iterar sobre eles! Por isso listas, strings, tuples e sets são chamados de “iteráveis”.

Guarde esse conceito — ele é importante e pode aparecer em outras linguagens muito usadas em data science, como Scala!

Agora, mãos à obra! Vamos nos aprofundar nas dúvidas sobre listas que podem estar (ou já estiveram) na sua cabeça como programador(a) Python. Aqui está a lista de perguntas que vamos responder neste tutorial:

1. Quando usar listas em Python e quando usar tuples, dicionários ou sets

A introdução parece bem simples quando você só está lendo, mas quando você está escrevendo um script pequeno em Python ou um projeto inteiro, pode ficar em dúvida entre escolher uma lista ou outro tipo de sequência.

Mesmo assim, escolher a estrutura de dados certa para o seu caso é essencial!

Continue lendo para entender melhor.

Listas versus tuples

Tuples são usadas para reunir uma sequência ordenada e imutável de elementos. Isso significa que:

  • Você não pode adicionar elementos a um tuple. Não existem métodos append() ou extend() para tuples,
  • Você não pode remover elementos de um tuple. Tuples não têm remove() ou pop(),
  • Você pode buscar elementos em um tuple, já que isso não muda o tuple.
  • Você também pode usar o operador in para verificar se um elemento existe no tuple.

Então, se você está definindo um conjunto constante de valores e tudo o que vai fazer é iterar sobre ele, use um tuple em vez de uma lista. Ele será mais rápido que listas e também mais seguro, pois tuples funcionam como dados “protegidos contra escrita”.

Listas versus dicionários

  • Uma lista armazena uma coleção ordenada de itens — ela preserva a ordem. Dicionários não têm ordem.
  • Dicionários associam cada chave a um valor, enquanto listas têm apenas valores.

Use um dicionário quando você tiver um conjunto não ordenado de chaves únicas mapeadas para valores.

Observação: como há chaves e valores ligados entre si, o desempenho costuma ser melhor que listas quando você precisa checar se um elemento existe.

Listas versus sets

  • Assim como dicionários, sets não têm ordem nos seus itens. Diferente das listas.
  • Sets exigem que os itens sejam “hashable”; listas podem armazenar itens não-hashable.
  • Sets exigem itens únicos e imutáveis. Duplicatas não são permitidas; listas permitem duplicatas e são mutáveis.

Use sets quando você tiver um conjunto não ordenado de valores únicos, imutáveis e hashable.

Não tem certeza do que é hashable?

Dá uma olhada abaixo para conferir:

Hashable Não hashable
Floats Dicionários
Integers Sets
Tuples Listas
Strings  
frozenset()  

Dica: não precisa acreditar só na nossa palavra! Teste você mesmo abaixo e experimente no shell do IPython :)

eyJsYW5ndWFnZSI6InB5dGhvbiIsInNhbXBsZSI6IiMgSW1wb3J0IHRoZSBgY29sbGVjdGlvbnNgIGxpYnJhcnlcbl9fX18gX19fX1xuXG4jIENoZWNrIGlmIGEgZGljdGlvbmFyeSBpcyBoYXNoYWJsZVxucHJpbnQoaXNpbnN0YW5jZSh7fSwgY29sbGVjdGlvbnMuSGFzaGFibGUpKVxuXG4jIENoZWNrIGlmIGEgZmxvYXQgaXMgaGFzaGFibGVcbnByaW50KGlzaW5zdGFuY2UoMC4xMjUsIGNvbGxlY3Rpb25zLkhhc2hhYmxlKSkiLCJzb2x1dGlvbiI6IiMgSW1wb3J0IHRoZSBgY29sbGVjdGlvbnNgIGxpYnJhcnlcbmltcG9ydCBjb2xsZWN0aW9uc1xuXG4jIENoZWNrIGlmIGEgZGljdGlvbmFyeSBpcyBoYXNoYWJsZVxucHJpbnQoaXNpbnN0YW5jZSh7fSwgY29sbGVjdGlvbnMuSGFzaGFibGUpKVxuXG4jIENoZWNrIGlmIGEgZmxvYXQgaXMgaGFzaGFibGVcbnByaW50KGlzaW5zdGFuY2UoMC4xMjUsIGNvbGxlY3Rpb25zLkhhc2hhYmxlKSkiLCJzY3QiOiJwcmVkZWZfbXNnID0gXCJEaWQgeW91IGFkZCBzb21lIGNvZGUgdG8gaW1wb3J0IGBjb2xsZWN0aW9uc2AgYW5kIHRvIHRlc3QgaWYgYSBmbG9hdCBpcyBoYXNoYWJsZT9cIlxuaW1wb3J0X21zZyA9IFwiRG9uJ3QgZm9yZ2V0IHRvIGltcG9ydCB0aGUgJ2NvbGxlY3Rpb25zJyBsaWJyYXJ5IVwiXG4jIFRlc3QgaW1wb3J0IGBjb2xsZWN0aW9uc2BcbnRlc3RfaW1wb3J0KFwiY29sbGVjdGlvbnNcIiwgc2FtZV9hcyA9IFRydWUsIG5vdF9pbXBvcnRlZF9tc2cgPSBpbXBvcnRfbXNnLCBpbmNvcnJlY3RfYXNfbXNnID0gcHJlZGVmX21zZylcbiMgVGVzdCBwcmludFxudGVzdF9mdW5jdGlvbihcbiAgICBcInByaW50XCIsXG4gICAgbm90X2NhbGxlZF9tc2c9cHJlZGVmX21zZyxcbiAgICBpbmNvcnJlY3RfbXNnPXByZWRlZl9tc2csXG4gICAgZG9fZXZhbD1GYWxzZVxuKVxuc3VjY2Vzc19tc2coXCJBd2Vzb21lIGpvYiFcIikifQ==

Observação: por trabalhar com itens hashable, checar pertencimento (testar se um elemento faz parte da sequência) é mais rápido com sets do que com listas.

2. Como selecionar um elemento de uma lista

Se você quer trabalhar direito com listas, precisa saber como acessá-las.

Normalmente você acessa listas para alterar alguns valores, atualizar, excluir ou executar alguma outra operação. A forma de acessar listas — e, por extensão, qualquer tipo de sequência — é usando o operador de índice [ ]. Dentro dos colchetes, vai um número inteiro.

Veja um exemplo:

eyJsYW5ndWFnZSI6InB5dGhvbiIsInByZV9leGVyY2lzZV9jb2RlIjoiYmlnZ2VyWm9vID0gWydiZWFyJywgJ2xpb24nLCAncGFuZGEnLCAnemVicmEnLCBbJ2NoaW1wYW56ZWVzJywgJ2dvcmlsbGFzJywgJ29yYW5ndXRhbnMnLCAnZ2liYm9ucyddXSIsInNhbXBsZSI6IiMgU2VsZWN0IHRoZSBmaXJzdCBsaXN0IGVsZW1lbnRcbm9uZVpvb0FuaW1hbCA9IGJpZ2dlclpvb1swXVxuXG4jIFByaW50IGBvbmVab29BbmltYWxgXG5wcmludChfX19fKSIsInNvbHV0aW9uIjoiIyBTZWxlY3QgdGhlIGZpcnN0IGxpc3QgZWxlbWVudFxub25lWm9vQW5pbWFsID0gYmlnZ2VyWm9vWzBdXG5cbiMgUHJpbnQgYG9uZVpvb0FuaW1hbGBcbnByaW50KG9uZVpvb0FuaW1hbCkiLCJzY3QiOiJwcmVkZWZfbXNnID0gXCJEaWQgeW91IHByaW50IGBvbmVab29BbmltYWw/YFwiXG4jIFRlc3Qgb25lWm9vQW5pbWFsXG50ZXN0X29iamVjdChcIm9uZVpvb0FuaW1hbFwiLCB1bmRlZmluZWRfbXNnID0gcHJlZGVmX21zZywgaW5jb3JyZWN0X21zZyA9IHByZWRlZl9tc2cpXG4jVGVzdCBwcmludFxudGVzdF9mdW5jdGlvbihcbiAgICBcInByaW50XCIsXG4gICAgbm90X2NhbGxlZF9tc2c9cHJlZGVmX21zZyxcbiAgICBpbmNvcnJlY3RfbXNnPXByZWRlZl9tc2csXG4gICAgZG9fZXZhbD1GYWxzZVxuKSJ9

Execute o código e veja o que retorna. Você vai notar que o primeiro elemento da variável biggerZoo é retornado. Pode confundir no começo, mas os índices começam em 0, não em 1.

Como obter o último elemento de uma lista

A resposta complementa a explicação da seção anterior.

Tente usar um valor negativo, como -1 ou -2, no operador de índice para recuperar o último elemento da lista biggerZoo!

eyJsYW5ndWFnZSI6InB5dGhvbiIsInByZV9leGVyY2lzZV9jb2RlIjoiYmlnZ2VyWm9vID0gWydiZWFyJywgJ2xpb24nLCAncGFuZGEnLCAnemVicmEnLCBbJ2NoaW1wYW56ZWVzJywgJ2dvcmlsbGFzJywgJ29yYW5ndXRhbnMnLCAnZ2liYm9ucyddXSIsInNhbXBsZSI6IiMgUGFzcyAtMSB0byB0aGUgaW5kZXggb3BlcmF0b3Igb24gYGJpZ2dlclpvb2Bcbm1vbmtleXMgPSBfX19cbnByaW50KG1vbmtleXMpXG5cbiMgUGFzcyAtMiB0byB0aGUgaW5kZXggb3BlcmF0b3Igb24gYGJpZ2dlclpvb2BcbnplYnJhID0gX19fXG5wcmludCh6ZWJyYSkiLCJzb2x1dGlvbiI6IiMgUGFzcyAtMSB0byB0aGUgaW5kZXggb3BlcmF0b3Igb24gYmlnZ2VyWm9vXG5tb25rZXlzID0gYmlnZ2VyWm9vWy0xXVxucHJpbnQobW9ua2V5cylcblxuIyBQYXNzIC0yIHRvIHRoZSBpbmRleCBvcGVyYXRvciBvbiBiaWdnZXJab29cbnplYnJhID0gYmlnZ2VyWm9vWy0yXVxucHJpbnQoemVicmEpIiwic2N0IjoicHJlZGVmX21zZyA9IFwiTG9vayBhdCB0aGUgcHJldmlvdXMgZXhhbXBsZSB0byBzZWUgaG93IHlvdSBjYW4gY29uc3RydWN0IHRoZSBpbmRleCBvcGVyYXRvciBvbiBgYmlnZ2VyWm9vXCJcbnplYnJhX3ByaW50X21zZyA9IFwiRGlkIHlvdSBwcmludCBgemVicmFgP1wiXG4jIFRlc3Qgb2JqZWN0c1xudGVzdF9vYmplY3QoXCJtb25rZXlzXCIsIHVuZGVmaW5lZF9tc2cgPSBwcmVkZWZfbXNnLCBpbmNvcnJlY3RfbXNnID0gcHJlZGVmX21zZylcbnRlc3Rfb2JqZWN0KFwiemVicmFcIiwgdW5kZWZpbmVkX21zZyA9IHByZWRlZl9tc2csIGluY29ycmVjdF9tc2cgPSBwcmVkZWZfbXNnKVxuI1Rlc3QgcHJpbnRcbnRlc3RfZnVuY3Rpb24oXG4gICAgXCJwcmludFwiLFxuICAgIG5vdF9jYWxsZWRfbXNnPXByZWRlZl9tc2csXG4gICAgaW5jb3JyZWN0X21zZz16ZWJyYV9wcmludF9tc2csXG4gICAgZG9fZXZhbD1GYWxzZVxuKVxuc3VjY2Vzc19tc2coXCJLZWVwIHVwIHRoZSBnb29kIHdvcmshXCIpIn0=

Bem tranquilo, né?

O que significa o erro Index out of Range?

Esse é um erro que você vai ver com frequência, especialmente quando está começando em programação ou em Python.

A melhor forma de entender é testando sozinho.

Use o widget interativo acima e tente passar números negativos muito pequenos ou positivos muito grandes!

Como você vai notar, o erro “Index Out Of Range” ocorre quando você passa ao operador de índice um inteiro maior (ou bem menor) do que o tamanho da sua lista. Em outras palavras, você está tentando acessar um índice que ainda não existe.

O trecho abaixo é um exemplo de código que vai disparar esse erro. Execute e veja o que acontece!

eyJsYW5ndWFnZSI6InB5dGhvbiIsInByZV9leGVyY2lzZV9jb2RlIjoiYmlnZ2VyWm9vID0gWydiZWFyJywgJ2xpb24nLCAncGFuZGEnLCAnemVicmEnLCBbJ2NoaW1wYW56ZWVzJywgJ2dvcmlsbGFzJywgJ29yYW5ndXRhbnMnLCAnZ2liYm9ucyddXSIsInNhbXBsZSI6IiMgUnVuIHRoaXMgY29kZSB0byB0cmlnZ2VyIGFuIFwiSW5kZXggT3V0IE9mIFJhbmdlXCIgRXJyb3JcbmJpZ2dlclpvb1s2XSJ9

A notação de slice em listas

Para quem está começando em programação ou em Python, este tópico pode confundir.

Em geral, você usa slice quando quer selecionar mais de um elemento de uma lista de uma vez. Assim como quando escolhe um único elemento, você usa colchetes. O diferencial é que, em vez de um único inteiro, você coloca um : entre os valores, assim:

eyJsYW5ndWFnZSI6InB5dGhvbiIsInByZV9leGVyY2lzZV9jb2RlIjoiYmlnZ2VyWm9vID0gWydiZWFyJywgJ2xpb24nLCAncGFuZGEnLCAnemVicmEnLCBbJ2NoaW1wYW56ZWVzJywgJ2dvcmlsbGFzJywgJ29yYW5ndXRhbnMnLCAnZ2liYm9ucyddXSIsInNhbXBsZSI6IiMgVXNlIHRoZSBzbGljZSBub3RhdGlvbiBsaXN0IHRoaXNcbnNvbWVab29BbmltYWxzID0gYmlnZ2VyWm9vWzI6IF1cblxuIyBQcmludCB0byBzZWUgd2hhdCB5b3UgZXhhY3RseSBzZWxlY3QgZnJvbSBgYmlnZ2VyWm9vYFxucHJpbnQoc29tZVpvb0FuaW1hbHMpXG5cbiMgVHJ5IHB1dHRpbmcgMiBvbiB0aGUgb3RoZXIgc2lkZSBvZiB0aGUgY29sb25cbm90aGVyWm9vQW5pbWFscyA9IGJpZ2dlclpvb1tfX19fXVxuXG4jIFByaW50IHRvIHNlZSB3aGF0IHlvdSdyZSBnZXR0aW5nIGJhY2tcbnByaW50KG90aGVyWm9vQW5pbWFscykiLCJzb2x1dGlvbiI6IiMgVXNlIHRoZSBzbGljZSBub3RhdGlvbiBsaXN0IHRoaXNcbnNvbWVab29BbmltYWxzID0gYmlnZ2VyWm9vWzI6IF1cblxuIyBQcmludCB0byBzZWUgd2hhdCB5b3UgZXhhY3RseSBzZWxlY3QgZnJvbSBgYmlnZ2VyWm9vYFxucHJpbnQoc29tZVpvb0FuaW1hbHMpXG5cbiMgVHJ5IHB1dHRpbmcgMiBvbiB0aGUgb3RoZXIgc2lkZSBvZiB0aGUgY29sb25cbm90aGVyWm9vQW5pbWFscyA9IGJpZ2dlclpvb1s6Ml1cblxuIyBQcmludCB0byBzZWUgd2hhdCB5b3UncmUgZ2V0dGluZyBiYWNrXG5wcmludChvdGhlclpvb0FuaW1hbHMpIiwic2N0IjoicHJlZGVmX21zZyA9IFwiRGlkIHlvdSBwdXQgcGFzcyBgOjJgIHRvIHRoZSBpbmRleCBvcGVyYXRvcj9cIlxuem9vQW5pbWFsc19wcmludF9tc2cgPSBcIkRpZCB5b3UgcHJpbnQgYG90aGVyWm9vQW5pbWFsc2A/XCJcbiMgVGVzdCBsaXN0IGBsaXN0XG50ZXN0X29iamVjdChcIm90aGVyWm9vQW5pbWFsc1wiLCB1bmRlZmluZWRfbXNnPXByZWRlZl9tc2csIGluY29ycmVjdF9tc2c9cHJlZGVmX21zZylcbiMgVGVzdCBwcmludFxudGVzdF9mdW5jdGlvbihcbiAgICBcInByaW50XCIsXG4gICAgbm90X2NhbGxlZF9tc2c9cHJlZGVmX21zZyxcbiAgICBpbmNvcnJlY3RfbXNnPXpvb0FuaW1hbHNfcHJpbnRfbXNnLFxuICAgIGRvX2V2YWw9RmFsc2VcbilcbnN1Y2Nlc3NfbXNnKFwiWW91IHJvY2shXCIpIn0=

Agora recebemos a lista biggerZoo, mas somente a partir do item panda, no índice 2, até o final. Ou seja, começamos no índice 2 e vamos até o fim, já que nenhum outro inteiro foi especificado.

E se fizermos o inverso?

Execute o bloco acima para conferir se você acertou!

Repare que agora recebemos apenas bear e lion. Começamos no índice 0 e vamos até o índice 2. Ao contrário do que você poderia esperar, o resultado não inclui o item panda.

Em geral, vale o seguinte:

# itens do índice start até end (mas end não é incluído!)
a[start:end]

# itens do índice start até o fim do array
a[start:]    

# itens do começo até end (mas end não é incluído!)
a[:end]

Dica: ao passar apenas dois-pontos :, você cria uma cópia da lista!

Além do slice básico, existe também o passo (step), que pode ser generalizado assim:

# do início até antes de end, com passo definido
a[start:end:step]

E o que exatamente faz esse step?

Ele permite “pular” pela lista e selecionar apenas os elementos conforme o passo definido. Exemplo:

eyJsYW5ndWFnZSI6InB5dGhvbiIsInByZV9leGVyY2lzZV9jb2RlIjoiaWdnZXJab28gPSBbJ2JlYXInLCAnbGlvbicsICdwYW5kYScsICd6ZWJyYScsIFsnY2hpbXBhbnplZXMnLCAnZ29yaWxsYXMnLCAnb3Jhbmd1dGFucycsICdnaWJib25zJ11dIiwic2FtcGxlIjoiIyBQcmludCB0byBzZWUgaG93IHRoZSBzdGVwIHZhbHVlIGluZmx1ZW5jZXMgeW91ciByZXN1bHRcbnByaW50KGJpZ2dlclpvb1syOjoyXSlcbnByaW50KGJpZ2dlclpvb1sxOjozXSkifQ==

Observação: se você não especificar o step, ele será 1. Nada será “pulado”.

Lembre-se: o resultado não inclui o índice final que você especificar no slice!

Como selecionar aleatoriamente um elemento de uma lista

Você pode selecionar um elemento aleatório da sua lista com o pacote random:

eyJsYW5ndWFnZSI6InB5dGhvbiIsInNhbXBsZSI6IiMgSW1wb3J0IGBjaG9pY2VgIGZyb20gdGhlIGByYW5kb21gIGxpYnJhcnlcbmZyb20gX19fXyBpbXBvcnQgX19fX1xuXG4jIENvbnN0cnVjdCB5b3VyIGBsaXN0YCB2YXJpYWJsZSB3aXRoIGEgbGlzdCBvZiB0aGUgZmlyc3QgNCBsZXR0ZXJzIG9mIHRoZSBhbHBoYWJldFxubGlzdCA9IFsnXycsJ18nLCdfJywnXyddXG5cbiMgUHJpbnQgeW91ciByYW5kb20gJ2xpc3QnIGVsZW1lbnRcbnByaW50KGNob2ljZShsaXN0KSkiLCJzb2x1dGlvbiI6IiMgSW1wb3J0IGBjaG9pY2VgIGZyb20gdGhlIGByYW5kb21gIGxpYnJhcnlcbmZyb20gcmFuZG9tIGltcG9ydCBjaG9pY2VcblxuIyBDb25zdHJ1Y3QgeW91ciBgbGlzdGAgdmFyaWFibGUgd2l0aCBhIGxpc3Qgb2YgdGhlIGZpcnN0IDQgbGV0dGVycyBvZiB0aGUgYWxwaGFiZXRcbmxpc3QgPSBbJ2EnLCAnYicsICdjJywgJ2QnXVxuXG4jIFByaW50IHlvdXIgcmFuZG9tICdsaXN0JyBlbGVtZW50XG5wcmludChjaG9pY2UobGlzdCkpIiwic2N0IjoicHJlZGVmX21zZyA9IFwiRGlkIHlvdSBhZGQgc29tZSBjb2RlIHRvIGNyZWF0ZSB0aGUgYGxpc3RgIHZhcmlhYmxlP1wiXG5pbXBvcnRfbXNnID0gXCJEb24ndCBmb3JnZXQgdG8gaW1wb3J0IHRoZSAncmFuZG9tJyBsaWJyYXJ5XCJcbnJhbmRvbV9saXN0X3ByaW50X21zZyA9IFwiRGlkIHlvdSBwcmludCB5b3UgcmFuZG9tIGBsaXN0YCBlbGVtZW50P1wiXG4jIFRlc3QgbGlzdCBgbGlzdFxudGVzdF9vYmplY3QoXCJsaXN0XCIsIHVuZGVmaW5lZF9tc2c9cHJlZGVmX21zZywgaW5jb3JyZWN0X21zZz1wcmVkZWZfbXNnKVxuIyBUZXN0IHByaW50XG50ZXN0X2Z1bmN0aW9uKFxuICAgIFwicHJpbnRcIixcbiAgICBub3RfY2FsbGVkX21zZz1wcmVkZWZfbXNnLFxuICAgIGluY29ycmVjdF9tc2c9cmFuZG9tX2xpc3RfcHJpbnRfbXNnLFxuICAgIGRvX2V2YWw9RmFsc2VcbilcbnN1Y2Nlc3NfbXNnKFwiQXdlc29tZSBqb2IhXCIpIn0=

Se você quiser selecionar aleatoriamente um elemento pelo índice, use o método randrange da biblioteca random:

eyJsYW5ndWFnZSI6InB5dGhvbiIsInNhbXBsZSI6IiMgSW1wb3J0IGByYW5kcmFuZ2VgIGZyb20gdGhlIGByYW5kb21gIGxpYnJhcnlcbmZyb20gX19fXyBpbXBvcnQgX19fX1xuXG4jIENvbnN0cnVjdCB5b3VyIGByYW5kb21MZXR0ZXJzYCB2YXJpYWJsZSB3aXRoIGEgbGlzdCBvZiB0aGUgZmlyc3QgNCBsZXR0ZXJzIG9mIHRoZSBhbHBoYWJldFxucmFuZG9tTGV0dGVycyA9IFsnXycsJ18nLCAnXycsICdfJ11cblxuIyBTZWxlY3QgYSByYW5kb20gaW5kZXggZnJvbSAncmFuZG9tTGV0dGVyc2BcbnJhbmRvbUluZGV4ID0gcmFuZHJhbmdlKDAsbGVuKHJhbmRvbUxldHRlcnMpKVxuXG4jIFByaW50IHlvdXIgcmFuZG9tIGVsZW1lbnQgZnJvbSBgcmFuZG9tYFxucHJpbnQocmFuZG9tTGV0dGVyc1tyYW5kb21JbmRleF0pIiwic29sdXRpb24iOiIjIEltcG9ydCBgcmFuZHJhbmdlYCBmcm9tIHRoZSBgcmFuZG9tYCBsaWJyYXJ5XG5mcm9tIHJhbmRvbSBpbXBvcnQgcmFuZHJhbmdlXG5cbiMgQ29uc3RydWN0IHlvdXIgYHJhbmRvbUxldHRlcnNgIHZhcmlhYmxlIHdpdGggYSBsaXN0IG9mIHRoZSBmaXJzdCA0IGxldHRlcnMgb2YgdGhlIGFscGhhYmV0XG5yYW5kb21MZXR0ZXJzID0gWydhJywgJ2InLCAnYycsICdkJ11cblxuIyBTZWxlY3QgYSByYW5kb20gaW5kZXggZnJvbSAncmFuZG9tTGV0dGVyc2BcbnJhbmRvbUluZGV4ID0gcmFuZHJhbmdlKDAsbGVuKHJhbmRvbUxldHRlcnMpKVxuXG4jIFByaW50IHlvdXIgcmFuZG9tIGVsZW1lbnQgZnJvbSBgcmFuZG9tYFxucHJpbnQocmFuZG9tTGV0dGVyc1tyYW5kb21JbmRleF0pIiwic2N0IjoicHJlZGVmX21zZyA9IFwiRGlkIHlvdSBhZGQgc29tZSBjb2RlIHRvIGltcG9ydCBgcmFuZG9tYCBhbmQgZGlkIHlvdSBjcmVhdGUgdGhlIGBsaXN0YCB2YXJpYWJsZT9cIlxucmFuZG9tX3ByaW50X21zZyA9IFwiRGlkIHlvdSBwcmludCB5b3VyIHJhbmRvbSBlbGVtZW50IGZyb20gYHJhbmRvbWA/XCJcbiMgVGVzdCBsaXN0IGByYW5kb21MZXR0ZXJzYFxudGVzdF9vYmplY3QoXCJyYW5kb21MZXR0ZXJzXCIsIHVuZGVmaW5lZF9tc2c9cHJlZGVmX21zZywgaW5jb3JyZWN0X21zZz1wcmVkZWZfbXNnKVxuIyBUZXN0IHByaW50XG50ZXN0X2Z1bmN0aW9uKFxuICAgIFwicHJpbnRcIixcbiAgICBub3RfY2FsbGVkX21zZz1wcmVkZWZfbXNnLFxuICAgIGluY29ycmVjdF9tc2c9cmFuZG9tX3ByaW50X21zZyxcbiAgICBkb19ldmFsPUZhbHNlXG4pXG5zdWNjZXNzX21zZyhcIldlbGwgZG9uZSFcIikifQ==

Dica: vale explorar a biblioteca random. Ela quebra um galho em vários cenários em Python!

3. Como transformar listas em Python em outras estruturas de dados

Às vezes, uma lista não é exatamente o que você precisa. Nesses casos, pode ser útil saber como transformar sua lista em uma estrutura mais apropriada. Abaixo, reunimos as conversões mais comuns e suas respostas.

Como converter uma lista em string

Você converte uma lista em string usando ''.join(). Essa operação “cola” todas as strings da lista e retorna uma única string. Leia mais aqui.

eyJsYW5ndWFnZSI6InB5dGhvbiIsInNhbXBsZSI6IiMgTGlzdCBvZiBTdHJpbmdzIHRvIGEgU3RyaW5nXG5saXN0T2ZTdHJpbmdzID0gWydPbmUnLCAnVHdvJywgJ1RocmVlJ11cbnN0ck9mU3RyaW5ncyA9ICcnLmpvaW4obGlzdE9mU3RyaW5ncylcbnByaW50KHN0ck9mU3RyaW5ncylcblxuIyBMaXN0IE9mIEludGVnZXJzIHRvIGEgU3RyaW5nXG5saXN0T2ZOdW1iZXJzID0gWzEsIDIsIDNdXG5zdHJPZk51bWJlcnMgPSAnJy5qb2luKHN0cihuKSBmb3IgbiBpbiBsaXN0T2ZOdW1iZXJzKVxucHJpbnQoc3RyT2ZOdW1iZXJzKSJ9

Observação: se sua lista só tem inteiros, converta-os para string antes de aplicar o join. Isso está ilustrado no segundo exemplo do bloco interativo acima.

A conversão de inteiro para string é feita iterando sobre a lista original listOfNumbers. Para saber mais sobre como iterar listas, veja a pergunta 12 e sua resposta.

Como converter uma lista em tuple

Você transforma uma lista em tuple usando a função tuple(). Passe sua lista para essa função e você recebe um tuple de volta!

Lembre-se: tuples são imutáveis. Você não consegue alterá-los depois!

Dica: experimente converter sua listOfStrings em tuple no exercício interativo da próxima seção.

Como converter sua lista em set

Como você deve lembrar, um set é uma coleção não ordenada de itens únicos. Isso significa que duplicatas que existiam na lista original se perdem na conversão — e a ordem também.

Para transformar uma lista em set, use a função set(). É só passar sua lista!

Agora pratique convertendo listOfStrings em tuple e em set aqui:

eyJsYW5ndWFnZSI6InB5dGhvbiIsInByZV9leGVyY2lzZV9jb2RlIjoibGlzdE9mU3RyaW5ncyA9IFsnT25lJywgJ1R3bycsICdUaHJlZSddIiwic2FtcGxlIjoiIyBQYXNzIHlvdXIgbGlzdCB0byBgdHVwbGUoKWBcbnR1cGxlKF9fXylcblxuIyBUcmFuc2Zvcm0geW91ciBsaXN0IGludG8gYSBzZXRcbnNldChfX18pIiwic29sdXRpb24iOiIjIFBhc3MgeW91ciBsaXN0IHRvIGB0dXBsZSgpYFxudHVwbGUobGlzdE9mU3RyaW5ncylcblxuIyBUcmFuc2Zvcm0geW91ciBsaXN0IGludG8gYSBzZXRcbnNldChsaXN0T2ZTdHJpbmdzKSIsInNjdCI6InByZWRlZl9tc2cgPSBcIkRpZCB5b3UgcGFzcyBgbGlzdE9mU3RyaW5nc2AgdG8gYm90aCBgdHVwbGUoKWAgYW5kIGBzZXQoKWA/XCJcbiMgVGVzdCBsZW5ndGggYGp1c3RBTGlzdGBcbnRlc3RfZnVuY3Rpb24oXG4gICAgXCJ0dXBsZVwiLFxuICAgIG5vdF9jYWxsZWRfbXNnPXByZWRlZl9tc2csXG4gICAgaW5jb3JyZWN0X21zZz1wcmVkZWZfbXNnLFxuICAgIGRvX2V2YWw9RmFsc2VcbilcbnRlc3RfZnVuY3Rpb24oXG4gICAgXCJzZXRcIixcbiAgICBub3RfY2FsbGVkX21zZz1wcmVkZWZfbXNnLFxuICAgIGluY29ycmVjdF9tc2c9cHJlZGVmX21zZyxcbiAgICBkb19ldmFsPUZhbHNlXG4pXG5zdWNjZXNzX21zZyhcIkdvb2Qgam9iIVwiKSJ9

Como converter listas em dicionários

Um dicionário trabalha com chaves e valores, então a conversão de lista para dicionário pode ser menos direta. Suponha que você tenha a lista:

helloWorld = ['hello','world','1','2']

Você precisa garantir que ‘hello’ e ‘world’ e ‘1’ e ‘2’ sejam interpretados como pares chave-valor. Para isso, selecione com slice e passe para zip().

zip() faz o que promete: “zipa” elementos. Neste caso, quando você zipa helloWorld[0::2] e helloWorld[1::2], a saída será:

eyJsYW5ndWFnZSI6InB5dGhvbiIsInByZV9leGVyY2lzZV9jb2RlIjoiaGVsbG9Xb3JsZCA9IFsnaGVsbG8nLCd3b3JsZCcsJzEnLCcyJ10iLCJzYW1wbGUiOiJsaXN0KHppcChoZWxsb1dvcmxkKSkifQ==

Observação: use list() para imprimir o resultado de zip().

Passe o resultado para dict(), que vai interpretar hello como chave e world como valor. Da mesma forma, 1 será chave e 2 será valor.

Execute o código abaixo para confirmar:

eyJsYW5ndWFnZSI6InB5dGhvbiIsInByZV9leGVyY2lzZV9jb2RlIjoiaGVsbG9Xb3JsZCA9IFsnaGVsbG8nLCd3b3JsZCcsJzEnLCcyJ10iLCJzYW1wbGUiOiIjIENvbnZlcnQgdG8gYSBkaWN0aW9uYXJ5XG5oZWxsb1dvcmxkRGljdGlvbmFyeSA9IGRpY3QoemlwKGhlbGxvV29ybGRbMDo6Ml0sIGhlbGxvV29ybGRbMTo6Ml0pKVxuXG4jIFByaW50IG91dCB0aGUgcmVzdWx0XG5wcmludChoZWxsb1dvcmxkRGljdGlvbmFyeSkifQ==

Observação: o segundo elemento passado a zip() usa step para selecionar apenas world e 2. O primeiro seleciona hello e 1.

Se a sua lista for grande, provavelmente você vai preferir algo assim:

eyJsYW5ndWFnZSI6InB5dGhvbiIsInNhbXBsZSI6ImEgPSBbMSwgMiwgMywgNCwgNV1cblxuIyBDcmVhdGUgYSBsaXN0IGl0ZXJhdG9yIG9iamVjdFxuaSA9IGl0ZXIoYSlcblxuIyBaaXAgYW5kIGNyZWF0ZSBhIGRpY3Rpb25hcnlcbnByaW50KGRpY3QoemlwKGksIGkpKSkifQ==

Observação: um objeto iterável pode fornecer um iterador. O iterador, que tem o método .__next__, guarda onde você está na iteração: ele sabe qual é o próximo elemento.

4. Como saber o tamanho da sua lista em Python

Passe sua lista para a função len() para obter o comprimento.

Teste abaixo! Já deixamos uma lista justAList pronta para você usar.

eyJsYW5ndWFnZSI6InB5dGhvbiIsInByZV9leGVyY2lzZV9jb2RlIjoianVzdEFMaXN0ID0gWzEsMiwzLCA0LCA1LCA2LCA3LCA4LDksIDEwXSIsInNhbXBsZSI6IiMgUGFzcyBganVzdEFMaXN0YCB0byBgbGVuKClgXG5sZW4oX19fXykiLCJzb2x1dGlvbiI6IiMgUGFzcyBganVzdEFMaXN0YCB0byBgbGVuKClgXG5sZW4oanVzdEFMaXN0KSIsInNjdCI6InByZWRlZl9tc2cgPSBcIkRpZCB5b3UgcGFzcyBganVzdEFMaXN0YCB0byB0aGUgYGxlbigpYCBmdW5jdGlvbj9cIlxuIyBUZXN0IGxlbmd0aCBganVzdEFMaXN0YFxudGVzdF9mdW5jdGlvbihcbiAgICBcImxlblwiLFxuICAgIG5vdF9jYWxsZWRfbXNnPXByZWRlZl9tc2csXG4gICAgaW5jb3JyZWN0X21zZz1wcmVkZWZfbXNnLFxuICAgIGRvX2V2YWw9RmFsc2VcbilcbnN1Y2Nlc3NfbXNnKFwiVGhhdCB3YXMgZWFzeSFcIikifQ==

Observação: len() não é só para listas; funciona com outras sequências e coleções, como dicionários, sets, strings etc. Veja mais funções nativas aqui.

5. Qual é a diferença entre os métodos append() e extend()?

Vamos começar relembrando o conceito de iterável apresentado no início do post:

Lembre-se: dizemos que um valor é iterável quando seu programa pode iterar sobre ele. Em outras palavras, um iterável representa uma sequência de um ou mais valores. Como você viu, listas são sequências, e todas as instâncias dos tipos de sequência do Python são iteráveis.

Dica: você verifica se uma variável é iterável quando ela tem o método .__iter__, como neste trecho:

eyJsYW5ndWFnZSI6InB5dGhvbiIsInNhbXBsZSI6IiMgVGhpcyBpcyB5b3VyIGxpc3Rcbmxpc3QgPSBbNSwgNiwgNywgOCwgOV1cblxuIyBDaGVjayB3aGV0aGVyIGl0J3MgaXRlcmFibGVcbmxpc3QuX19pdGVyX18ifQ==

Execute o código e teste outros exemplos simples no shell do IPython!

Com o conceito de iterável em mente, fica fácil entender a diferença: extend() recebe um iterável (isso mesmo: lista, set, tuple ou string!) e adiciona cada elemento, um por um, à lista.

append(), por sua vez, adiciona seu argumento ao final da lista como um único item. Ou seja, se append() receber um iterável, ele vai tratá-lo como um objeto único.

Estude os exemplos abaixo e brinque com o código para fixar as diferenças entre os métodos:

eyJsYW5ndWFnZSI6InB5dGhvbiIsInByZV9leGVyY2lzZV9jb2RlIjoic2hvcnRMaXN0ID0gWzEsIDIsIDNdXG5sb25nZXJMaXN0ID0gWzEsIDIsIDMsIDQsIDUsIDZdIiwic2FtcGxlIjoiIyBBcHBlbmQgWzQsNV0gdG8gYHNob3J0TGlzdGBcbnNob3J0TGlzdC5hcHBlbmQoWzQsIDVdKVxuXG4jIFVzZSB0aGUgcHJpbnQoKSBtZXRob2QgdG8gc2hvdyBzaG9ydExpc3RcbnByaW50KF9fX18pXG5cbiMgRXh0ZW5kIGBsb25nZXJMaXN0YCB3aXRoIFs0LDVdXG5sb25nZXJMaXN0LmV4dGVuZChbNCwgNV0pXG5cbiMgVXNlIHRoZSBwcmludCgpIG1ldGhvZCB0byBzZWUgbG9uZ2VyTGlzdFxucHJpbnQoX19fXykiLCJzb2x1dGlvbiI6IiMgQXBwZW5kIFs0LDVdIHRvIGBzaG9ydExpc3RgXG5zaG9ydExpc3QuYXBwZW5kKFs0LCA1XSlcblxuIyBVc2UgdGhlIGBwcmludCgpYCBtZXRob2QgdG8gc2hvdyBgc2hvcnRMaXN0YFxucHJpbnQoc2hvcnRMaXN0KVxuXG4jIEV4dGVuZCBgbG9uZ2VyTGlzdGAgd2l0aCBbNCw1XVxubG9uZ2VyTGlzdC5leHRlbmQoWzQsIDVdKVxuXG4jIFVzZSB0aGUgYHByaW50KClgIG1ldGhvZCB0byBzZWUgYGxvbmdlckxpc3RgXG5wcmludChsb25nZXJMaXN0KSIsInNjdCI6InByZWRlZl9tc2cgPSBcIkRpZCB5b3UgcGFzcyBgc2hvcnRMaXN0YCBhbmQgYGxvbmdlckxpc3RgIHRvIHRoZSBgcHJpbnQoKWAgZnVuY3Rpb24/XCJcbmxpc3RfcHJpbnRfbXNnID0gXCJEaWQgeW91IHB1dCBgc2hvcnRMaXN0YCBpbiBgcHJpbnQoKWA/XCJcbiMgVGVzdCBwcmludCBzaG9ydExpc3RcbnRlc3RfZnVuY3Rpb24oXG4gICAgXCJwcmludFwiLFxuICAgIG5vdF9jYWxsZWRfbXNnPXByZWRlZl9tc2csXG4gICAgaW5jb3JyZWN0X21zZz1saXN0X3ByaW50X21zZyxcbiAgICBkb19ldmFsPUZhbHNlXG4pXG4jIFRlc3Q6IFByaW50IGxvbmdlckxpc3QgY29udGVudHNcbmxpc3RfcHJpbnRfbXNnMiA9IFwiRGlkIHlvdSBwdXQgYGxvbmdlckxpc3RgIGluIGBwcmludCgpYD9cIlxudGVzdF9mdW5jdGlvbihcbiAgICBcInByaW50XCIsXG4gICAgbm90X2NhbGxlZF9tc2c9cHJlZGVmX21zZyxcbiAgICBpbmNvcnJlY3RfbXNnPWxpc3RfcHJpbnRfbXNnMixcbiAgICBkb19ldmFsPUZhbHNlXG4pXG5zdWNjZXNzX21zZyhcImBhcHBlbmQoKWAgYW5kIGBleHRlbmQoKWAgaG9sZCBubyBzZWNyZXRzIGZvciB5b3UhXCIpIn0=

Perceba que extend() é mais eficiente do que chamar append() várias vezes.

6. Como concatenar listas em Python

Para concatenar listas, use o operador +. Ele retorna uma nova lista que é a concatenação das duas, sem modificar as originais.

Observação: concatenar e fazer append podem confundir. append() é diferente do operador + e, por sua vez, este é parecido com extend(), mas não é idêntico... Com append() e extend(), você altera a lista original; com +, você cria outra variável de lista.

Teste e compare com os exemplos do bloco anterior:

eyJsYW5ndWFnZSI6InB5dGhvbiIsInByZV9leGVyY2lzZV9jb2RlIjoic2hvcnRMaXN0ID0gWzEsIDIsIDNdIiwic2FtcGxlIjoiIyBDb25jYXRlbmF0ZSBgc2hvcnRMaXN0YCB3aXRoIGBbNCw1XWBcbnBsdXNMaXN0ID0gc2hvcnRMaXN0ICsgWzQsNV1cblxuI1VzZSB0aGUgYHByaW50KClgIG1ldGhvZCB0byBzZWUgYHBsdXNMaXN0YFxucHJpbnQoX19fXykiLCJzb2x1dGlvbiI6IiMgQ29uY2F0ZW5hdGUgYHNob3J0TGlzdGAgd2l0aCBgWzQsNV1gXG5wbHVzTGlzdCA9IHNob3J0TGlzdCArIFs0LDVdXG5cbiNVc2UgdGhlIGBwcmludCgpYCBtZXRob2QgdG8gc2VlIGBwbHVzTGlzdGBcbnByaW50KHBsdXNMaXN0KSIsInNjdCI6InByZWRlZl9tc2cgPSBcIkRpZCB5b3UgcGFzcyBgcGx1c0xpc3RgIHRvIHRoZSBgcHJpbnQoKWAgZnVuY3Rpb24/XCJcbnBsdXNfcHJpbnRfbXNnID0gXCJEaWQgeW91IHB1dCBgcGx1c0xpc3RgIGluIGBwcmludCgpYD9cIlxuIyBUZXN0IHByaW50IHBsdXNMaXN0XG50ZXN0X2Z1bmN0aW9uKFxuICAgIFwicHJpbnRcIixcbiAgICBub3RfY2FsbGVkX21zZz1wcmVkZWZfbXNnLFxuICAgIGluY29ycmVjdF9tc2c9cGx1c19wcmludF9tc2csXG4gICAgZG9fZXZhbD1GYWxzZVxuKVxuc3VjY2Vzc19tc2coXCJFYXN5IHBlYXN5IVwiKSJ9

7. Como ordenar uma lista em Python

Existem duas formas simples de ordenar os valores em ordem crescente ou decrescente:

  • Usar o método sort()
  • Ou usar a função sorted() e passar a lista

A função sorted() pode ser aplicada a qualquer iterável — também aceita strings, sets e dicionários!

Dica: teste você mesmo! Já criamos duas listas, rooms e orders, para você ordenar com as duas técnicas acima :)

eyJsYW5ndWFnZSI6InB5dGhvbiIsInByZV9leGVyY2lzZV9jb2RlIjoicm9vbXMgPSBbMzk3LCA4NywgMjk4LCA1MDMsIDQwMl1cbm9yZGVycyA9IFs3NiwgMywgNCwgNV0iLCJzYW1wbGUiOiIjIFVzZSBzb3J0KCkgb24gdGhlIHJvb21zIGxpc3Rcbl9fX18uc29ydCgpXG5cbiMgUHJpbnQgb3V0IHJvb21zIHRvIHNlZSB0aGUgcmVzdWx0XG5wcmludChfX19fKVxuXG4jIE5vdyB1c2UgdGhlIHNvcnRlZCgpIGZ1bmN0aW9uIG9uIG9yZGVyc1xuc29ydGVkKF9fX18pXG5cbiMgUHJpbnQgb3V0IG9yZGVyc1xucHJpbnQoX19fXykiLCJzb2x1dGlvbiI6IiMgVXNlIGBzb3J0KClgIG9uIHRoZSBgcm9vbXNgIGxpc3RcbnJvb21zLnNvcnQoKVxuXG4jIFByaW50IG91dCBgcm9vbXNgIHRvIHNlZSB0aGUgcmVzdWx0XG5wcmludChyb29tcylcblxuIyBOb3cgdXNlIHRoZSBgc29ydGVkKClgIGZ1bmN0aW9uIG9uIHRoZSBgb3JkZXJzYCBsaXN0XG5zb3J0ZWQob3JkZXJzKVxuXG4jIFByaW50IG91dCBvcmRlcnNcbnByaW50KG9yZGVycykiLCJzY3QiOiJwcmVkZWZfbXNnID0gXCJQdXQgaW4gYHJvb21zLnNvcnQoKWAsIHByaW50IGByb29tc2AgYW5kIHRoZW4gdXNlIGBzb3J0ZWQob3JkZXJzKWAgdG8gc29ydCB0aGUgb3JkZXJzIGFnYWluLlwiXG4jIFRlc3Qgc29ydCByb29tcyB3aXRoIHNvcnQoKVxudGVzdF9mdW5jdGlvbihcInJvb21zLnNvcnRcIiwgbm90X2NhbGxlZF9tc2c9XCJNYWtlIHN1cmUgdG8gc29ydCB0aGUgYHJvb21zYCBsaXN0LlwiKVxuIyBUZXN0OiBQcmludCBmaWxlIGNvbnRlbnRzXG5wcmludF9yb29tc19tc2cgPSBcIkRpZCB5b3UgcHV0IGByb29tc2AgaW4gYHByaW50KClgP1wiXG50ZXN0X2Z1bmN0aW9uKFxuICAgIFwicHJpbnRcIixcbiAgICBub3RfY2FsbGVkX21zZz1wcmVkZWZfbXNnLFxuICAgIGluY29ycmVjdF9tc2c9cHJpbnRfcm9vbXNfbXNnLFxuICAgIGRvX2V2YWw9RmFsc2VcbilcbnRlc3RfZnVuY3Rpb24oXCJzb3J0ZWRcIiwgbm90X2NhbGxlZF9tc2c9XCJNYWtlIHN1cmUgdG8gcGFzcyB0aGUgYG9yZGVyc2AgbGlzdCB0byBgc29ydGVkKClgLlwiKVxuc3VjY2Vzc19tc2coXCJHcmVhdCBqb2IhXCIpIn0=

Observação: a lista original muda após a ordenação. Use quando você não precisar mais da ordem antiga.

8. Como clonar ou copiar uma lista em Python

Há várias formas de clonar/copiar uma lista:

  • Fazer slice da lista original e guardar em nova variável: newList = oldList[:]
  • Usar a função nativa list(): newList = list(oldList)
  • Usar a biblioteca copy:
    • Com o método copy(): newList = copy.copy(oldList)
    • Se sua lista contém objetos e você quer copiá-los também, use copy.deepcopy(): copy.deepcopy(oldList)

Teste abaixo! Já criamos uma lista groceries para você copiar e compartilhar com os amigos.

eyJsYW5ndWFnZSI6InB5dGhvbiIsInByZV9leGVyY2lzZV9jb2RlIjoib3JvY2VyaWVzID0gWydhcHBsZXMnLCAnZWdncycsICdzdGVhaycsICdzcGFnaGV0dGknLCBbJ2ZhbnRhJywgJ3Nwcml0ZScsICdjb2xhJ11dIiwic2FtcGxlIjoiIyBDb3B5IHRoZSBncm9jZXJ5IGxpc3QgYnkgc2xpY2luZyBhbmQgc3RvcmUgaXQgaW4gdGhlIGBuZXdHcm9jZXJpZXNgIHZhcmlhYmxlXG5uZXdHcm9jZXJpZXMgPSBncm9jZXJpZXNbX19dXG5cbiMgQ29weSB0aGUgZ3JvY2VyeSBsaXN0IHdpdGggdGhlIGBsaXN0KClgIGZ1bmN0aW9uIGFuZCBzdG9yZSBpdCBpbiBhIGBncm9jZXJpZXNGb3JGcmllbmRzYCB2YXJpYWJsZVxuZ3JvY2VyaWVzRm9yRnJpZW5kcyA9IGxpc3QoX19fXylcblxuIyBJbXBvcnQgdGhlIGNvcHkgbGlicmFyeSBhcyBjXG5pbXBvcnQgX19fXyBhcyBfX1xuXG4jIENyZWF0ZSBhIGBncm9jZXJpZXNGb3JGYW1pbHlgIHZhcmlhYmxlIGFuZCBhc3NpZ24gdGhlIGNvcGllZCBncm9jZXJ5IGxpc3QgdG8gaXRcbmdyb2Nlcmllc0ZvckZhbWlseSA9ICBjLmNvcHkoX19fXylcblxuIyBVc2UgYGRlZXBjb3B5KClgIGFuZCBhc3NpZ24gdGhlIGNvcGllZCBsaXN0IHRvIGEgYGdyb2Nlcmllc0ZvcktpZHNgIHZhcmlhYmxlXG5ncm9jZXJpZXNGb3JLaWRzPSBjLmRlZXBjb3B5KF9fX18pIiwic29sdXRpb24iOiIjIENvcHkgdGhlIGdyb2NlcnkgbGlzdCBieSBzbGljaW5nIGFuZCBzdG9yZSBpdCBpbiB0aGUgYG5ld0dyb2Nlcmllc2AgdmFyaWFibGVcbm5ld0dyb2NlcmllcyA9IGdyb2Nlcmllc1s6XVxuIyBDb3B5IHRoZSBncm9jZXJ5IGxpc3Qgd2l0aCB0aGUgYGxpc3QoKWAgZnVuY3Rpb24gYW5kIHN0b3JlIGl0IGluIGEgYGdyb2Nlcmllc0ZvckZyaWVuZHNgIHZhcmlhYmxlXG5ncm9jZXJpZXNGb3JGcmllbmRzID0gbGlzdChncm9jZXJpZXMpXG4jIEltcG9ydCB0aGUgY29weSBsaWJyYXJ5XG5pbXBvcnQgY29weSBhcyBjXG4jIENyZWF0ZSBhIGBncm9jZXJpZXNGb3JGYW1pbHlgIHZhcmlhYmxlIGFuZCBhc3NpZ24gdGhlIGNvcGllZCBncm9jZXJ5IGxpc3QgdG8gaXRcbmdyb2Nlcmllc0ZvckZhbWlseSA9IGMuY29weShncm9jZXJpZXMpXG4jIFVzZSBgZGVlcGNvcHkoKWAgYW5kIGFzc2lnbiB0aGUgY29waWVkIGxpc3QgdG8gYSBgZ3JvY2VyaWVzRm9yS2lkc2AgdmFyaWFibGVcbmdyb2Nlcmllc0ZvcktpZHMgPSBjLmRlZXBjb3B5KGdyb2NlcmllcykiLCJzY3QiOiJwcmVkZWZfbXNnID0gXCJEb24ndCBmb3JnZXQgdG8gYWRkIHNvbWUgb2RlIHRvIHRoZSBleGVyY2lzZSEgXCJcbiMgVGVzdCBjb3B5IG9mIGdyb2NlcnkgbGlzdCB3aXRoIHNsaWNpbmdcbnRlc3Rfb2JqZWN0KFwibmV3R3JvY2VyaWVzXCIsIHVuZGVmaW5lZF9tc2cgPSBwcmVkZWZfbXNnLCBpbmNvcnJlY3RfbXNnID0gcHJlZGVmX21zZylcblxuIyBUZXN0IGNvcHkgb2YgZ3JvY2VyeSBsaXN0IHdpdGggYGxpc3QoKWBcbnRlc3Rfb2JqZWN0KFwiZ3JvY2VyaWVzRm9yRnJpZW5kc1wiLCB1bmRlZmluZWRfbXNnID0gcHJlZGVmX21zZywgaW5jb3JyZWN0X21zZyA9IHByZWRlZl9tc2cpXG50ZXN0X2Z1bmN0aW9uKFwibGlzdFwiLCBub3RfY2FsbGVkX21zZz1cIk1ha2Ugc3VyZSB0byBwYXNzIHRoZSBncm9jZXJpZXMgbGlzdCB0byBgbGlzdCgpYC5cIilcblxuIyBJbXBvcnQgY29weSBsaWJyYXJ5XG50ZXN0X2ltcG9ydChcImNvcHlcIiwgc2FtZV9hcyA9IFRydWUsIG5vdF9pbXBvcnRlZF9tc2cgPSBwcmVkZWZfbXNnLCBpbmNvcnJlY3RfYXNfbXNnID0gcHJlZGVmX21zZylcblxuIyBUZXN0IGNvcHkuY29weSgpXG50ZXN0X29iamVjdChcImdyb2Nlcmllc0ZvckZhbWlseVwiLCB1bmRlZmluZWRfbXNnID0gcHJlZGVmX21zZywgaW5jb3JyZWN0X21zZyA9IHByZWRlZl9tc2cpXG5jb3B5X2NvcHlfbXNnID0gXCJEaWQgeW91IHBhc3MgdGhlIGdyb2NlcnkgbGlzdCB0byBgY29weS5jb3B5KClgP1wiXG50ZXN0X2Z1bmN0aW9uKFxuICAgIFwiY29weS5jb3B5XCIsXG4gICAgbm90X2NhbGxlZF9tc2c9cHJlZGVmX21zZyxcbiAgICBpbmNvcnJlY3RfbXNnPWNvcHlfY29weV9tc2csXG4gICAgZG9fZXZhbD1GYWxzZVxuKVxuXG4jIFRlc3QgY29weS5kZWVwY29weSgpXG50ZXN0X29iamVjdChcImdyb2Nlcmllc0ZvcktpZHNcIiwgdW5kZWZpbmVkX21zZyA9IHByZWRlZl9tc2csIGluY29ycmVjdF9tc2cgPSBwcmVkZWZfbXNnKVxuY29weV9kZWVwY29weV9tc2cgPSBcIkRpZCB5b3UgcGFzcyB0aGUgZ3JvY2VyeSBsaXN0IHRvIGBjb3B5LmRlZXBjb3B5KClgP1wiXG50ZXN0X2Z1bmN0aW9uKFxuICAgIFwiY29weS5kZWVwY29weVwiLFxuICAgIG5vdF9jYWxsZWRfbXNnPXByZWRlZl9tc2csXG4gICAgaW5jb3JyZWN0X21zZz1jb3B5X2RlZXBjb3B5X21zZyxcbiAgICBkb19ldmFsPUZhbHNlXG4pXG5cbnN1Y2Nlc3NfbXNnKFwiVGhhdCB3YXMgYSBsb3Qgb2Ygd29yayEgQXdlc29tZSA6KVwiKSJ9

Observação: usando cópias “simples”, suas listas originais podem ser alteradas. Já com deepcopy(), isso não acontece. Rode o código abaixo para ver:

eyJsYW5ndWFnZSI6InB5dGhvbiIsInNhbXBsZSI6IiMgVGhpcyBpcyB5b3VyIGxpc3Rcbm9iamVjdExpc3QgPSBbJ2EnLCdiJyxbJ2FiJywnYmEnXV1cblxuIyBDb3B5IHRoZSBgb2JqZWN0TGlzdGBcbmNvcGllZExpc3QgPSBvYmplY3RMaXN0WzpdXG5cbiMgQ2hhbmdlIHRoZSBmaXJzdCBsaXN0IGVsZW1lbnQgb2YgYGNvcGllZExpc3RgXG5jb3BpZWRMaXN0WzBdID0gJ2MnXG5cbiMgR28gdG8gdGhlIHRoaXJkIGVsZW1lbnQgKHRoZSBuZXN0ZWQgbGlzdCkgYW5kIGNoYW5nZSB0aGUgc2Vjb25kIGVsZW1lbnRcbmNvcGllZExpc3RbMl1bMV0gPSAnZCdcblxuIyBQcmludCBvdXQgdGhlIG9yaWdpbmFsIGxpc3QgdG8gc2VlIHdoYXQgaGFwcGVuZWQgdG8gaXRcbnByaW50KG9iamVjdExpc3QpIn0=

Se você já domina listas em Python, a próxima seção traz respostas simples para dúvidas mais avançadas.

Mas, se você quer ir além das listas e entender vantagens de bibliotecas em relação às estruturas nativas, a próxima seção vai ajudar bastante.

Continue lendo!

9. Como funciona list comprehension em Python?

List comprehension é, basicamente, uma forma elegante de construir listas. Para quem curte matemática, o melhor é que o visual lembra listas matemáticas. Veja:

eyJsYW5ndWFnZSI6InB5dGhvbiIsInNhbXBsZSI6Ilt4KioyIGZvciB4IGluIHJhbmdlKDEwKV0ifQ==

O que isso quer dizer? Você pega os números de 0 a 10 (sem incluir o 10) e multiplica cada um por 2. Execute o código acima e veja se bate com o esperado.

De boa, né? Vamos subir um nível.

Agora crie a mesma lista, mas só multiplicando os números divisíveis por 2. Com list comprehension, também é fácil:

eyJsYW5ndWFnZSI6InB5dGhvbiIsInNhbXBsZSI6Ilt4KioyIGZvciB4IGluIHJhbmdlKDEwKSBpZiB4JTI9PTBdIn0=

Basta adicionar uma condição com if. Se a condição for verdadeira, o número entra na multiplicação por 2. Aqui, a condição é ser divisível por 2 (sem resto).

De forma geral, você também pode usar list comprehension para transformar listas em outras listas — parece mais difícil, mas não é.

Considere este exemplo:

eyJsYW5ndWFnZSI6InB5dGhvbiIsInNhbXBsZSI6Im15TGlzdCA9IFsxLCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5LCAxMF1cblsobGFtYmRhIHg6IHgqeCkoeCkgZm9yIHggaW4gbXlMaXN0XSJ9

Nesse caso, você já tem uma lista myList e a transforma via comprehension: mais uma vez, for x in myList aplica uma operação para cada elemento de myList.

Repare que aparece (lambda x: x*x). Simplificando: lambdas são funções anônimas criadas em tempo de execução. Você pode encarar esse trecho só como um indicativo e focar em x*x.

Essa função recebe um elemento e o multiplica por ele mesmo. Como é anônima, você precisa passar o elemento explicitamente: por isso (lambda x: x*x)(x).

Em outras palavras, você poderia reescrever a segunda linha assim:

f = lambda x: x*x
[f(x) for x in range(10)]

Primeiro define a função lambda que multiplica um elemento por ele mesmo e, em seguida, passa cada elemento da lista para que ele seja elevado ao quadrado.

Observação: além de list comprehension, existem set e dict comprehensions.

Já deu para sentir o poder, mas ainda tem muito mais sobre list comprehension.

Siga nas próximas perguntas para ver compreensão aninhada e exemplos práticos do que isso pode fazer no seu código Python!

10. Como contar ocorrências de um item em uma lista

Como listas não exigem unicidade dos itens, pode ser útil saber não só quantas vezes um item específico aparece, mas também contar a frequência de todos os itens.

Abaixo estão as respostas para os dois casos!

Contando as ocorrências de um item

Para contar as ocorrências de um único item, use o método count():

eyJsYW5ndWFnZSI6InB5dGhvbiIsInNhbXBsZSI6IiMgQ291bnQgdGhlIG9jY3VycmVuY2VzIG9mIHRoZSBudW1iZXIgNFxucHJpbnQoWzEsIDIsIDksIDQsIDUsIDQsIDFdLmNvdW50KDQpKVxuXG4jIENvdW50IHRoZSBvY2N1cnJlbmNlcyBvZiB0aGUgbGV0dGVyIFwiYVwiXG5saXN0ID0gW1wiZFwiLCBcImFcIiwgXCJ0XCIsIFwiYVwiLCBcImNcIiwgXCJhXCIsIFwibVwiLCBcInBcIl1cbmxpc3QuY291bnQoXCJhXCIpIn0=

Contar todas as ocorrências de itens em uma lista também é chamado de “tally” (contagem) de uma lista.

Contando todos os itens com count()

Para contar a frequência de cada item, você pode combinar list comprehension com count():

eyJsYW5ndWFnZSI6InB5dGhvbiIsInNhbXBsZSI6Imxpc3Q9IFtcImFcIixcImJcIixcImJcIl1cbltbeCxsaXN0LmNvdW50KHgpXSBmb3IgeCBpbiBzZXQobGlzdCldIn0=

Nesse código, a lista é convertida em set para manter apenas itens únicos (a e b). Depois, para cada item do set, você chama count() na lista original.

Lembre-se: sets só contêm itens únicos!

Neste caso, a é passado para list.count(x) e todas as ocorrências de a são contadas.

Contando todos os itens com Counter()

Alternativamente, há o método mais rápido Counter(), da biblioteca collections:

eyJsYW5ndWFnZSI6InB5dGhvbiIsInNhbXBsZSI6IiMgSW1wb3J0IGBDb3VudGVyYCBmcm9tIHRoZSBgY29sbGVjdGlvbnNgIGxpYnJhcnlcbmZyb20gY29sbGVjdGlvbnMgaW1wb3J0IENvdW50ZXJcblxuIyBUaGlzIGlzIHlvdXIgbGlzdFxubGlzdCA9IFtcImFcIixcImJcIixcImJcIl1cblxuIyBQYXNzIGBsaXN0YCB0byBgQ291bnRlcigpYFxuQ291bnRlcihsaXN0KSJ9

Observação: Counter() costuma ser mais rápido para contar todos os itens.

11. Como dividir uma lista em blocos de mesmo tamanho

Para fatiar sua lista em partes iguais, você pode usar zip() combinado com iter():

eyJsYW5ndWFnZSI6InB5dGhvbiIsInNhbXBsZSI6IiMgWW91ciBsaXN0IGB4YFxueCA9IFsxLDIsMyw0LDUsNiw3LDgsOV1cblxuIyBTcGxpdCBgeGAgdXAgaW4gY2h1bmtzIG9mIDNcbnkgPSB6aXAoKltpdGVyKHgpXSozKVxuXG4jIFVzZSBgbGlzdCgpYCB0byBwcmludCB0aGUgcmVzdWx0IG9mIGB6aXAoKWBcbmxpc3QoeSkifQ==

O código funciona assim:

  • iter() cria um iterador sobre a sequência.
  • [iter(x)] * 3 produz uma lista com três objetos listiterator: cada um é um iterador de x.
  • o * antes de zip() desempacota a sequência em argumentos, passando o mesmo iterador três vezes para zip(), que puxa um item a cada vez.

Esperou... Esse último passo ficou confuso?

Vamos por partes:

  1. Você terá três iteradores de lista, que podem ser vistos como:

[1,2,3,4,5,6,7,8,9], [1,2,3,4,5,6,7,8,9], [1,2,3,4,5,6,7,8,9]


  1. Na primeira vez, zip() pega um elemento sequencial de cada lista, deixando você com:

[1][2][3]


Observação: os iteradores controlam qual é o próximo elemento!

  1. Na segunda passada, elementos são adicionados às três listas recém-criadas, resultando em:

[1, 4], [2, 5], [3, 6]


  1. Na última, o mesmo processo gera:

[1, 4, 7], [2, 5, 8], [3, 6, 9]


  1. Zipando essas três listas, você fica com:

[1, 2, 3], [4, 5, 6], [7, 8, 9]

Se preferir colocar essa lógica em uma função, você pode fazer assim:

eyJsYW5ndWFnZSI6InB5dGhvbiIsInNhbXBsZSI6IiMgTWV0aG9kIHRvIHNwbGl0IHVwIHlvdXIgbGlzdHMgaW50byBjaHVua3NcbmRlZiBjaHVua3MobGlzdCwgY2h1bmtTaXplKTpcbiAgICBcIlwiXCJcIllpZWxkIHN1Y2Nlc3NpdmUgY2h1bmtTaXplLXNpemVkIGNodW5rcyBmcm9tIGxpc3QuXCIiXCJcbiAgICBmb3IgaSBpbiByYW5nZSgwLCBsZW4obGlzdCksIGNodW5rU2l6ZSk6XG4gICAgICAgIHlpZWxkIGxpc3RbaTppICsgY2h1bmtTaXplXVxuXG4jIFVzZSB5b3VyIGBjaHVua3NgIGZ1bmN0aW9uIHRvIHByaW50IG91dCBjaHVua3Mgb2YgdGhlIHNhbWUgc2l6ZVxuaW1wb3J0IHBwcmludFxucHByaW50LnByaW50KGxpc3QoY2h1bmtzKHJhbmdlKDEwLCA3NSksIDEwKSkpIn0=

A função chunks() recebe uma lista e o tamanho do bloco. Ela vai “yieldar” blocos sucessivos do tamanho escolhido.

Depois, range(0, len(list), chunkSize): começa em 0 e vai até o comprimento da lista, com passo igual ao chunkSize.

Para cada elemento desse range, você retorna um slice da lista original, começando no índice atual e indo até índice + chunkSize.

Por exemplo, quando o índice 0 passa no loop, você obtém [0:2]. Na iteração seguinte, o índice 2 passa (lembre do step!) e é retornado [2:4].

Observação: aqui usamos pprint() (pretty print) para mostrar o resultado.

Você também pode usar list comprehension em vez de escrever a função:

eyJsYW5ndWFnZSI6InB5dGhvbiIsInNhbXBsZSI6IiMgU2V0IHVwIHlvdXIgbGlzdCBhbmQgY2h1bmsgc2l6ZVxubGlzdCA9IHJhbmdlKDAsIDUwKVxuY2h1bmsgPSA1XG5cbiMgU3BsaXQgdXAgeW91ciBsaXN0IGludG8gY2h1bmtzXG5bbGlzdFtpOmkgKyBjaHVua10gZm9yIGkgaW4gcmFuZ2UoMCwgbGVuKGxpc3QpLCBjaHVuayldIn0=

12. Como percorrer uma lista em Python

Você percorre listas facilmente com um for. Para quem não está familiarizado: o for permite executar uma ação para cada elemento da lista.

Em Python, um for fica assim:

eyJsYW5ndWFnZSI6InB5dGhvbiIsInNhbXBsZSI6IiMgVGhpcyBpcyB5b3VyIGxpc3Rcbm15bGlzdCA9IFtbMSwyLDNdLFs0LDUsNiw3XSxbOCw5LDEwXV1cblxuIyBMb29wIG92ZXIgeW91ciBsaXN0IGFuZCBwcmludCBhbGwgZWxlbWVudHMgdGhhdCBhcmUgb2Ygc2l6ZSAzXG5mb3IgeCBpbiBteWxpc3Q6XG4gICAgICBpZiBsZW4oeCk9PTM6XG4gICAgICAgIHByaW50KHgpIn0=

Você tem a lista mylist e pede ao Python para conferir se o tamanho de cada elemento é igual a 3. Como existem duas sublistas com três elementos — [1,2,3] e [8, 9,10] —, só elas são impressas.

Observação: o x pode ser substituído por element, listElement ou o nome que você quiser. Teste no console!

O resultado não mostra índices. Se você quiser iterar usando índices, faça assim:

eyJsYW5ndWFnZSI6InB5dGhvbiIsInNhbXBsZSI6IiMgVGhpcyBpcyB5b3VyIGxpc3Rcbm15TGlzdCA9IFszLDQsNSw2XVxuXG4jIExvb3Agb3ZlciBgbXlMaXN0YCBhbmQgcHJpbnQgdHVwbGVzIG9mIGFsbCBpbmRpY2VzIGFuZCB2YWx1ZXMgXG5mb3IgaSwgdmFsIGluIGVudW1lcmF0ZShteUxpc3QpOlxuICAgICBwcmludChpLCB2YWwpIn0=

Como queremos imprimir elemento e índice, usamos enumerate(myList), que retorna um par (índice, valor). Na cabeça do for, usamos i, val para deixar claro que esperamos ambos.

Observação: você também pode usar list comprehension para percorrer e já imprimir, sem print() explícito:

eyJsYW5ndWFnZSI6InB5dGhvbiIsInByZV9leGVyY2lzZV9jb2RlIjoibXlMaXN0ID0gW1sxLDIsM10sWzQsNSw2LDddLFs4LDksMTBdXSIsInNhbXBsZSI6Ilt4IGZvciB4IGluIG15TGlzdCBpZiBsZW4oeCk9PTNdIn0=

13. Como “achatar” listas (flatten)

Para transformar uma lista de listas em uma lista simples, você pode usar sum(). Não esqueça de passar a lista e uma lista vazia como segundo argumento:

eyJsYW5ndWFnZSI6InB5dGhvbiIsInNhbXBsZSI6IiMgWW91ciBpbml0aWFsIGxpc3Qgb2YgbGlzdHNcbmxpc3QgPSBbWzEsMl0sWzMsNF0sWzUsNl1dXG5cbiMgRmxhdHRlbiBvdXQgeW91ciBvcmlnaW5hbCBsaXN0IG9mIGxpc3RzIHdpdGggYHN1bSgpYFxuc3VtKGxpc3QsIFtdKSJ9

Você também pode usar outras duas abordagens para achatar listas:

eyJsYW5ndWFnZSI6InB5dGhvbiIsInByZV9leGVyY2lzZV9jb2RlIjoibGlzdE9mTGlzdHMgPSBbWzEsMl0sWzMsNF0sWzUsNl1dIiwic2FtcGxlIjoiIyBZb3UgY2FuIHJlZHVjZSB0aGUgbGlzdHMgb2YgbGlzdHMgb2YgbGlzdHMgbGlrZSB0aGlzXG5mcm9tIGZ1bmN0b29scyBpbXBvcnQgcmVkdWNlXG5wcmludChyZWR1Y2UobGFtYmRhIHgseTogeCt5LGxpc3RPZkxpc3RzKSlcblxuIyBPciB5b3UgY2FuIHVzZSBsaXN0IGNvbXByZWhlbnNpb25cbnByaW50KFtpdGVtIGZvciBzdWJsaXN0IGluIGxpc3RPZkxpc3RzIGZvciBpdGVtIGluIHN1Ymxpc3RdKSJ9
    • Use reduce() com uma lambda. reduce() reduz o iterável a um único valor conforme a função passada. Aqui, somamos cumulativamente as listas: [1,2] é somado a [3,4], e o resultado a [5,6]. Visualmente:
([1,2]+[3,4])+[5,6]

Lembre-se: o operador + concatena listas.

  • A segunda opção é usar list comprehension aninhado. Primeiro percorremos cada sublist in list ([1, 2], [3, 4], [5, 6]) e depois item for item in sublist, imprimindo cada item.

Outra forma de visualizar o comprehension aninhado é reescrever com for tradicional:

list1 = []

for sublist in list:
  for item in sublist:
    list1.append(item)

14. Como obter a interseção de duas listas em Python

Interseção usando list comprehension

Para obter a interseção de duas listas, você pode usar filter().

O exercício abaixo ilustra. Já definimos list1 e list2. Use o shell do IPython para inspecionar.

eyJsYW5ndWFnZSI6InB5dGhvbiIsInByZV9leGVyY2lzZV9jb2RlIjoibGlzdDEgPSBbMSwgNiwgNywgMTAsIDEzLCAyOCwgMzIsIDQxLCA1OCwgNjNdXG5saXN0MiA9IFtbMTMsIDE3LCAxOCwgMjEsIDMyXSwgWzcsIDExLCAxMywgMTQsIDI4XSwgWzEsIDUsIDYsIDgsIDE1LCAxNl1dIiwic2FtcGxlIjoiIyBJbnRlcnNlY3QgYm90aCBsaXN0cyB3aXRoIGxpc3QgY29tcHJlaGVuc2lvblxuaW50ZXJzZWN0aW9uID0gW2xpc3QoZmlsdGVyKGxhbWJkYSB4OiB4IGluIGxpc3QxLCBzdWJsaXN0KSkgZm9yIHN1Ymxpc3QgaW4gbGlzdDJdXG5cbiMgUHJpbnQgdGhlIHJlc3VsdCBvZiB0aGUgaW50ZXJzZWN0aW9uXG5wcmludChfX19fKSIsInNvbHV0aW9uIjoiIyBJbnRlcnNlY3QgYm90aCBsaXN0cyB3aXRoIGxpc3QgY29tcHJlaGVuc2lvblxuaW50ZXJzZWN0aW9uID0gW2xpc3QoZmlsdGVyKGxhbWJkYSB4OiB4IGluIGxpc3QxLCBzdWJsaXN0KSkgZm9yIHN1Ymxpc3QgaW4gbGlzdDJdXG5cbiMgUHJpbnQgdGhlIHJlc3VsdCBvZiB0aGUgaW50ZXJzZWN0aW9uXG5wcmludChpbnRlcnNlY3Rpb24pIiwic2N0IjoicHJlZGVmX21zZyA9IFwiZGlkIHlvdSBwYXNzIGBpbnRlcnNlY3Rpb25gIHRvIHRoZSBgcHJpbnQoKWAgZnVuY3Rpb24/XCJcbiMgVGVzdCBgcHJpbnRgXG50ZXN0X2Z1bmN0aW9uKFxuICAgIFwicHJpbnRcIixcbiAgICBub3RfY2FsbGVkX21zZz1wcmVkZWZfbXNnLFxuICAgIGluY29ycmVjdF9tc2c9cHJlZGVmX21zZyxcbiAgICBkb19ldmFsPUZhbHNlXG4pXG5zdWNjZXNzX21zZyA9IFwiV2F5IHRvIGdvIVwiIn0=

No código acima, filter() pega cada item das sublistas e verifica se ele está na lista-fonte list1. O list comprehension é executado para cada sublista de list2.

Observação: como filter() retorna um iterável, você precisa embrulhar em list(). Remova list() para testar!

Para mais legibilidade, você também pode usar comprehensions aninhadas:

eyJsYW5ndWFnZSI6InB5dGhvbiIsInByZV9leGVyY2lzZV9jb2RlIjoibGlzdDEgPSBbMSwgNiwgNywgMTAsIDEzLCAyOCwgMzIsIDQxLCA1OCwgNjNdXG5saXN0MiA9IFtbMTMsIDE3LCAxOCwgMjEsIDMyXSwgWzcsIDExLCAxMywgMTQsIDI4XSwgWzEsIDUsIDYsIDgsIDE1LCAxNl1dIiwic2FtcGxlIjoiIyBBbiBpbnRlcnNlY3Rpb24gb2YgYm90aCBsaXN0cywgc3RvcmVkIGluIGBpbnRlcnNlY3Rpb25gXG5pbnRlcnNlY3Rpb24gPSBbW3ggZm9yIHggaW4gc3VibGlzdCBpZiB4IGluIGxpc3QxXSBmb3Igc3VibGlzdCBpbiBsaXN0Ml1cblxuIyBQcmludCB0aGUgcmVzdWx0IG9mIHRoZSBpbnRlcnNlY3Rpb25cbnByaW50KGludGVyc2VjdGlvbikifQ==

Interseção com set()

Se a ordem não importa e você não precisa se preocupar com duplicatas, use a interseção de sets:

eyJsYW5ndWFnZSI6InB5dGhvbiIsInByZV9leGVyY2lzZV9jb2RlIjoibGlzdDEgPSBbMSwgNiwgNywgMTAsIDEzLCAyOCwgMzIsIDQxLCA1OCwgNjNdXG5saXN0MiA9IFsxMywgMTcsIDE4LCAyMSwgMzIsIDcsIDExLCAxMywgMTQsIDI4LCAxLCA1LCA2LCA4LCAxNSwgMTZdIiwic2FtcGxlIjoiIyBNYWtlIHVzZSBvZiB0aGUgbGlzdCBhbmQgc2V0IGRhdGEgc3RydWN0dXJlc1xucHJpbnQobGlzdChzZXQobGlzdDEpICYgc2V0KGxpc3QyKSkpXG5cbiMgVXNlIGBpbnRlcnNlY3Rpb24oKWBcbnByaW50KGxpc3Qoc2V0KGxpc3QxKS5pbnRlcnNlY3Rpb24obGlzdDIpKSkifQ==

No primeiro exemplo, você converte ambas as listas em sets, calcula a interseção e converte de volta em lista. A ordem será arbitrária. Você também pode converter apenas a maior lista em set e usar intersection() com qualquer iterável.

Observação: para esses dois métodos, a lista não pode conter outras listas. Por isso list2 é diferente. Imprima para conferir!

15. Como remover duplicatas de uma lista

Como dito no início do post, o melhor é usar set quando você precisa de uma coleção única e não ordenada.

Para criar um set a partir de qualquer iterável, basta passá-lo à função set(). Se depois você precisar voltar a uma lista, passe o set para list().

Lembre-se: um iterável pode ser uma lista, dicionário, etc. Verifique se uma variável é iterável chamando .__iter__.

O exemplo abaixo mostra claramente como usar set() para remover todas as duplicatas da sua lista:

eyJsYW5ndWFnZSI6InB5dGhvbiIsInNhbXBsZSI6IiMgWW91ciBsaXN0IHdpdGggZHVwbGljYXRlIHZhbHVlc1xuZHVwbGljYXRlcyA9IFsxLCAyLCAzLCAxLCAyLCA1LCA2LCA3LCA4XVxuXG4jIFByaW50IHRoZSB1bmlxdWUgYGR1cGxpY2F0ZXNgIGxpc3RcbnByaW50KGxpc3Qoc2V0KGR1cGxpY2F0ZXMpKSlcblxuIyBBIGxpc3Qgd2l0aCBzbWFsbCBudW1iZXJzIFxuc21hbGxOdW1iZXJzID0gWzEsIDIsIDNdXG5cbiMgUHJpbnQgdGhlIHVuaXF1ZSBgZHVwbGljYXRlc2AgbGlzdCB3aXRob3V0IHRoZSBzbWFsbCBudW1iZXJzXG5saXN0KHNldChkdXBsaWNhdGVzKSAtIHNldChzbWFsbE51bWJlcnMpKSJ9

Como você vê no último resultado, a ordem original não é mantida após subtrair o set smallNumbers. Sets são coleções não ordenadas, então qualquer ordem existente é perdida. Ao converter de volta para lista, uma ordem arbitrária é criada.

Se a ordem é importante, use outro mecanismo. Esta página aprofunda o assunto.

16. Por que usar NumPy em vez de listas do Python?

No geral, há quatro motivos pelos quais programadores preferem arrays NumPy a listas do Python:

  • arrays NumPy são mais compactos;
  • leitura e escrita são mais rápidas;
  • NumPy é mais conveniente graças às várias operações vetoriais e matriciais “de fábrica”;
  • e pode ser mais eficiente, pois é implementado de forma otimizada.

17. Como criar arrays NumPy vazios

Se você quer apenas criar um array vazio do NumPy, execute:

eyJsYW5ndWFnZSI6InB5dGhvbiIsInNhbXBsZSI6ImltcG9ydCBudW1weVxubnVtcHkuYXJyYXkoW10pIn0=

Se sua intenção é inicializar um array NumPy, siga um destes caminhos:

eyJsYW5ndWFnZSI6InB5dGhvbiIsInByZV9leGVyY2lzZV9jb2RlIjoiaW1wb3J0IG51bXB5Iiwic2FtcGxlIjoiIyBNYWtlIGEgTnVtUHkgYXJyYXkgb2YgZm91ciByb3dzIGFuZCB0d28gY29sdW1ucyBhbmQgZmlsbGVkIHdpdGggMFxubnVtcHkuemVyb3Moc2hhcGU9KDQsMikpXG5cbiMgTWFrZSBhIE51bVB5IGFycmF5IG9mIDEgdmFsdWVzIG9mIHRocmVlIGNvbHVtbnNcbm51bXB5Lm9uZXMoMylcblxuIyBNYWtlIGFuIGVtcHR5IE51bVB5IGFycmF5XG5udW1weS5lbXB0eShzaGFwZT0oMCwwKSkifQ==

Confira a documentação nesta página para outras formas de criar arrays.

18. Como fazer contas com listas em Python

Muitas vezes usamos listas não só para armazenar valores, mas também para fazer operações matemáticas. Esta seção cobre perguntas frequentes sobre o tema.

Como calcular a média ponderada de uma lista

A média ponderada é parecida com a média simples, mas leva em conta valor e peso.

Pode soar pesado à primeira vista. Veja um exemplo:

cost = [0.424, 0.4221, 0.4185, 0.4132, 0.413]
cases = [10, 20, 30, 40, 50]

Você pode calcular facilmente com os trechos abaixo:

eyJsYW5ndWFnZSI6InB5dGhvbiIsInByZV9leGVyY2lzZV9jb2RlIjoiY29zdCA9IFswLjQyNCwgMC40MjIxLCAwLjQxODUsIDAuNDEzMiwgMC40MTNdXG5jYXNlcyA9IFsxMCwgMjAsIDMwLCA0MCwgNTBdIiwic2FtcGxlIjoiZm9yIGMgaW4gcmFuZ2UobGVuKGNvc3QpKTpcbiAgIGNvc3RbY10gPSAoY29zdFtjXSAqIGNhc2VzW2NdIC8gc3VtKGNhc2VzKSlcbmNvc3QgPSBzdW0oY29zdClcbnByaW50KGNvc3QpIn0=

Ou usar uma destas abordagens. Primeiro, assim:

eyJsYW5ndWFnZSI6InB5dGhvbiIsInByZV9leGVyY2lzZV9jb2RlIjoia29zdCA9IFswLjQyNCwgMC40MjIxLCAwLjQxODUsIDAuNDEzMiwgMC40MTNdXG5jYXNlcyA9IFsxMCwgMjAsIDMwLCA0MCwgNTBdIiwic2FtcGxlIjoic3VtKGNvc3RbY10gKiBjYXNlc1tjXSAvIHN1bShjYXNlcykgZm9yIGMgaW4gcmFuZ2UobGVuKGNvc3QpKSkifQ==

Ou então assim:

eyJsYW5ndWFnZSI6InB5dGhvbiIsInByZV9leGVyY2lzZV9jb2RlIjoia29zdCA9IFswLjQyNCwgMC40MjIxLCAwLjQxODUsIDAuNDEzMiwgMC40MTNdXG5jYXNlcyA9IFsxMCwgMjAsIDMwLCA0MCwgNTBdIiwic2FtcGxlIjoic3VtKGNvc3RbY10gKiBjYXNlc1tjXSBmb3IgYyBpbiByYW5nZShsZW4oY29zdCkpKSAvIHN1bShjYXNlcykifQ==

Por fim, dá para calcular a média ponderada com ajuda do zip().

Dica: crie uma variável costAndCases recebendo zip() com cost e cases. Você verá outra lista de tuplas. O primeiro valor da tupla é o custo; o segundo, o número de casos naquele preço.

eyJsYW5ndWFnZSI6InB5dGhvbiIsInByZV9leGVyY2lzZV9jb2RlIjoia29zdCA9IFswLjQyNCwgMC40MjIxLCAwLjQxODUsIDAuNDEzMiwgMC40MTNdXG5jYXNlcyA9IFsxMCwgMjAsIDMwLCA0MCwgNTBdIiwic2FtcGxlIjoiIyBTZWUgd2hhdCBgemlwKClgIGRvZXMgdG8geW91ciBgY29zdGAgYW5kIGBjYXNlc2BcbnByaW50KGxpc3QoemlwKF9fX18sIF9fX18pKSlcblxuIyBDYWxjdWxhdGUgdGhlIHdlaWdodGVkIGF2ZXJhZ2VcbnByaW50KHN1bShbeCAqIHkgZm9yIHgsIHkgaW4gemlwKGNvc3QsIGNhc2VzKV0pIC8gc3VtKGNhc2VzKSkiLCJzb2x1dGlvbiI6IiMgU2VlIHdoYXQgYHppcCgpYCBkb2VzIHRvIHlvdXIgbGlzdHNcbnByaW50KGxpc3QoemlwKGNvc3QsIGNhc2VzKSkpXG5cbiMgQ2FsY3VsYXRlIHRoZSB3ZWlnaHRlZCBhdmVyYWdlXG5wcmludChzdW0oW3ggKiB5IGZvciB4LCB5IGluIHppcChjb3N0LCBjYXNlcyldKSAvIHN1bShjYXNlcykpIiwic2N0IjoicHJlZGVmX21zZyA9IFwiRG9uJ3QgZm9yZ2V0IHRvIGFkZCB0aGUgYHppcCgpYCBmdW5jdGlvbiBhbmQgdG8gcGFzcyBgY29zdGAgYW5kIGBjYXNlYCB0byBpdCFcIlxuIyBUZXN0IG9iamVjdCBjb3N0QW5kQ2FzZXNcbnRlc3RfZnVuY3Rpb24oXCJ6aXBcIiwgXG4gICAgICAgICAgICAgIG5vdF9jYWxsZWRfbXNnID0gXCJIYXZlIHlvdSBjcmVhdGVkIHRoZSBjb3N0QW5kQ2FzZXMgdmFyaWFibGU/IERvbid0IGZvcmdldCB0byBwYXNzIGBjb3N0YCBhbmQgYGNhc2VzYCB0byBgemlwKClgIHRvIGNyZWF0ZSBpdCFcIixcbiAgICAgICAgICAgICAgaW5jb3JyZWN0X21zZz1wcmVkZWZfbXNnLCBcbiAgICAgICAgICAgICAgZG9fZXZhbD1GYWxzZSlcbnN1Y2Nlc3NfbXNnKFwiQXdlc29tZSB3b3JrIVwiKSJ9

Lembre-se do que zip() faz? Ele literalmente “zipa” as listas: por exemplo, zip(cost, cases) gera [(0.424, 10), (0.4221, 20), (0.4185, 30), (0.4132, 40), (0.413, 50)].

Como calcular o quantil de uma lista

Quantis são essenciais para resumir seu conjunto de dados, junto com mínimo e máximo. Você também tem os percentis 25, 50 e 75 — primeiro quartil, mediana e terceiro quartil.

No total, você precisa de cinco números para resumir seu conjunto: mínimo, máximo, mediana e dois quartis.

Encontrar mínimo e máximo é fácil, mas e os percentis?

É simples. Suponha 25 instâncias ordenadas do menor para o maior:

  • O percentil 25 (Q1) é 0,25 × 25 = 6,25; arredondando para cima, 7 — o 7º elemento.
  • O percentil 75 (Q3) é 0,75 × 25 = 18,75; arredondando para cima, 19 — o 19º elemento.
  • A mediana (50º) é 0,5 × 25 = 12,5; arredondando, o 13º elemento.

Como programar isso para sua lista?

A forma mais simples é usando NumPy. Siga as instruções no exercício interativo abaixo para calcular os percentis da sua lista:

eyJsYW5ndWFnZSI6InB5dGhvbiIsInNhbXBsZSI6IiMgSW1wb3J0IG51bXB5IGFzIG5wXG5pbXBvcnQgX19fXyBhcyBfX1xuXG4jIE1ha2UgYSBOdW1QeSBhcnJheVxuYSA9IG5wLmFycmF5KFsxLDIsMyw0LDVdKVxuXG4jIFJldHVybiB0aGUgNTB0aCBwZXJjZW50aWxlIG9mIG91ciBOdW1QeSBhcnJheVxucCA9IG5wLnBlcmNlbnRpbGUoYSwgNTApXG5cbiNQcmludCB0aGUgcmVzdWx0XG5wcmludChfX19fKSIsInNvbHV0aW9uIjoiIyBJbXBvcnQgbnVtcHkgYXMgbnBcbmltcG9ydCBudW1weSBhcyBucFxuXG4jIE1ha2UgYSBOdW1QeSBhcnJheVxuYSA9IG5wLmFycmF5KFsxLDIsMyw0LDVdKVxuXG4jIFJldHVybiB0aGUgNTB0aCBwZXJjZW50aWxlIG9mIG91ciBOdW1QeSBhcnJheVxucCA9IG5wLnBlcmNlbnRpbGUoYSwgNTApXG5cbiNQcmludCB0aGUgcmVzdWx0XG5wcmludChwKSIsInNjdCI6InByZWRlZl9tc2cgPSBcIkhhdmUgeW91IGltcG9ydGVkIG51bXB5IGFuZCBwcmludGVkIG91dCB0aGUgcGVyY2VudGlsZSByZXN1bHQ/XCJcbnF1YW50aWxlX3ByaW50X21zZyA9IFwiRG9uJ3QgZm9yZ2V0IHRvIHBhc3MgYHBgIHRvIGBwcmludCgpYCFcIlxuaW1wb3J0X21zZyA9IFwiSGF2ZSB5b3UgaW1wb3J0ZWQgbnVtcHk/XCJcbnRlc3RfZnVuY3Rpb24oXG4gICAgXCJwcmludFwiLFxuICAgIG5vdF9jYWxsZWRfbXNnPXByZWRlZl9tc2csXG4gICAgaW5jb3JyZWN0X21zZz1xdWFudGlsZV9wcmludF9tc2csXG4gICAgZG9fZXZhbD1GYWxzZVxuKVxuIyBUZXN0IGltcG9ydCBgbnVtcHlgXG50ZXN0X2ltcG9ydChcIm51bXB5XCIsIHNhbWVfYXMgPSBUcnVlLCBub3RfaW1wb3J0ZWRfbXNnID0gaW1wb3J0X21zZywgaW5jb3JyZWN0X2FzX21zZyA9IHByZWRlZl9tc2cpXG5zdWNjZXNzX21zZyhcIkZhbnRhc3RpYyFcIikifQ==

Como somar listas elemento a elemento

Suponha duas listas:

list1=[1, 2, 3]
list2=[4, 5, 6]

E você quer somar elemento a elemento: 1+4, 2+5, 3+6. Há duas formas.

Continue lendo!

… com Python “puro”

Use map com operator.add para somar elemento a elemento:

eyJsYW5ndWFnZSI6InB5dGhvbiIsInByZV9leGVyY2lzZV9jb2RlIjoibGlzdDE9WzEsIDIsIDNdXG5saXN0Mj1bNCwgNSwgNl0iLCJzYW1wbGUiOiJmcm9tIG9wZXJhdG9yIGltcG9ydCBhZGRcbmxpc3QobWFwKGFkZCwgbGlzdDEsIGxpc3QyKSkifQ==

Isso gera a lista [5, 7, 9].

Observação: use list() para imprimir o resultado de map().

Ou use zip() com list comprehension:

eyJsYW5ndWFnZSI6InB5dGhvbiIsInByZV9leGVyY2lzZV9jb2RlIjoibGlzdDE9WzEsIDIsIDNdXG5saXN0Mj1bNCwgNSwgNl0iLCJzYW1wbGUiOiJbc3VtKHgpIGZvciB4IGluIHppcChsaXN0MSwgbGlzdDIpXSJ9

… com NumPy

Os exemplos anteriores funcionam para listas pequenas; com mais dados, use numpy para facilitar.

Importe o numpy e converta as listas em arrays NumPy:

eyJsYW5ndWFnZSI6InB5dGhvbiIsInNhbXBsZSI6IiMgSW1wb3J0IG51bXB5IGFzIG5wXG5pbXBvcnQgX19fXyBhcyBfX1xuXG4jIE1ha2UgeW91ciBsaXN0cyBpbnRvIE51bVB5IGFycmF5c1xudmVjdG9yMSA9IG5wLmFycmF5KFsxLCAyLCAzXSlcbnZlY3RvcjIgPSBucC5hcnJheShbNCwgNSwgNl0pXG5cbiMgRWxlbWVudC13aXNlIGFkZGl0aW9uXG5zdW1fdmVjdG9yID0gdmVjdG9yMSArIHZlY3RvcjIgXG5cbiMgUHJpbnQgdGhlIHJlc3VsdFxucHJpbnQoX19fXykiLCJzb2x1dGlvbiI6IiMgSW1wb3J0IG51bXB5IGFzIG5wXG5pbXBvcnQgbnVtcHkgYXMgbnBcblxuIyBNYWtlIHlvdXIgbGlzdHMgaW50byBOdW1QeSBhcnJheXNcbnZlY3RvcjEgPSBucC5hcnJheShbMSwgMiwgM10pXG52ZWN0b3IyID0gbnAuYXJyYXkoWzQsIDUsIDZdKVxuXG4jIEVsZW1lbnQtd2lzZSBhZGRpdGlvblxuc3VtX3ZlY3RvciA9IHZlY3RvcjEgKyB2ZWN0b3IyIFxuXG4jIFByaW50IHRoZSByZXN1bHRcbnByaW50KHN1bV92ZWN0b3IpIiwic2N0IjoicHJlZGVmX21zZyA9IFwiRGlkIHlvdSBpbXBvcnQgbnVtcHkgYW5kIHByaW50IHRoZSByZXN1bHQ/XCJcbnByaW50X21zZz0gXCJEaWQgeW91IHBhc3MgYHN1bV92ZWN0b3JgIGB0byBwcmludCgpYFwiXG5pbXBvcnRfbXNnPVwiRG9uJ3QgZm9yZ2V0IHRvIGltcG9ydCBudW1weSBhcyBucCFcIlxudGVzdF9mdW5jdGlvbihcbiAgICBcInByaW50XCIsXG4gICAgbm90X2NhbGxlZF9tc2c9cHJlZGVmX21zZyxcbiAgICBpbmNvcnJlY3RfbXNnPXByaW50X21zZyxcbiAgICBkb19ldmFsPUZhbHNlXG4pXG50ZXN0X2ltcG9ydChcIm51bXB5XCIsIHNhbWVfYXMgPSBUcnVlLCBub3RfaW1wb3J0ZWRfbXNnID0gaW1wb3J0X21zZywgaW5jb3JyZWN0X2FzX21zZyA9IHByZWRlZl9tc2cpXG5zdWNjZXNzX21zZyA9IFwiWW91J3JlIG9mZmljaWFsbHkgYSBQeXRob24gbGlzdCBleHBlcnQhXCIifQ==

O que vem a seguir na sua jornada de data science com Python?

Você chegou ao fim do nosso tutorial interativo sobre listas em Python. Foi bastante conteúdo e um bom exercício — parabéns!

Listas são só uma parte, pequena mas essencial, da sua jornada com Python em data science. Tem muito mais para explorar! Nosso curso interativo Intro to Python for Data Science é perfeito para quem quer aprender mais sobre Python e como ele é usado em data science: ele começa do básico e leva você gradualmente a um nível intermediário, introduzindo NumPy. Perfeito para quem tem pouca experiência em programação!

Se você já é um usuário mais avançado, considere conferir nosso curso Intermediate Python For Data Science, feito para quem está pronto para levar suas habilidades para o próximo nível. Este curso vai te levar ainda mais longe! Ele introduz mais bibliotecas, como matplotlib e pandas, conceitos como lógica, controle de fluxo e loops, e inclui um estudo de caso para consolidar suas habilidades.

Já usa Python para data science mas quer ir além? Você pode se interessar pelo nosso curso Importing Data Into Python ou ler nossa série de tutoriais The importance of preprocessing in data science and the machine learning pipeline!

Tópicos
Python
Data Analysis

Learn more about Python

Curso

Introdução à Ciência de Dados em Python

4 h
502.2K
Mergulhe na ciência de dados com Python para analisar e visualizar seus dados de forma eficaz. Não precisa ter experiência ou conhecimento em programação.
Ver detalhesRight Arrow
Iniciar Curso
Ver maisRight Arrow
Relacionado

blog

Top 20 perguntas sobre NumPy em entrevistas: do básico ao avançado

Prepare-se para sua próxima entrevista em ciência de dados com perguntas essenciais sobre NumPy, do básico ao avançado. Perfeito para afiar suas habilidades e ganhar confiança!
Tim Lu's photo

Tim Lu

9 min

Tutorial

Python Copy List: O que você deve saber

Entenda como copiar listas em Python. Saiba como usar as funções copy() e list(). Descubra a diferença entre cópias superficiais e profundas.
Allan Ouko's photo

Allan Ouko

7 min

Tutorial

Como dividir listas em Python: Exemplos básicos e métodos avançados

Aprenda a dividir listas Python com técnicas como slicing, compreensão de listas e itertools. Descubra quando usar cada método para um tratamento ideal dos dados.
Allan Ouko's photo

Allan Ouko

11 min

Tutorial

Tutorial dos métodos .append() e .extend() do Python

Aprenda a usar os métodos .append() e .extend() para adicionar elementos a uma lista.
DataCamp Team's photo

DataCamp Team

2 min

Tutorial

Tutorial e exemplos de funções e métodos de listas Python

Aprenda sobre as funções e métodos da lista Python. Siga agora os exemplos de código para list() e outras funções e métodos Python!
Abid Ali Awan's photo

Abid Ali Awan

7 min

Tutorial

Como tirar um item de uma lista no Python

Entenda como tirar itens de uma lista no Python. Familiarize-se com métodos como remove(), pop() e del para gerenciamento de listas.
Allan Ouko's photo

Allan Ouko

7 min

Ver MaisVer Mais