Retirando elementos vazios de uma lista

Há poucos dias, lendo um código escrito pelo amigo Elias Dorneles, me deparei com uma forma bem elegante de desconsiderar os elementos vazios ou nulos de uma lista:

lista = ['algumas', 'palavras', '', 'e', 'nada', 'mais', '']
lista = filter(None, lista)
# lista fica: ['algumas', 'palavras', 'e', 'nada', 'mais']

Legal, não? Pois é, isso está na documentação da função:

filter(function, iterable)
Construct a list from those elements of iterable for which function returns true. iterable may be either a sequence, a container which supports iteration, or an iterator. If iterable is a string or a tuple, the result also has that type; otherwise it is always a list. If function is None, the identity function is assumed, that is, all elements of iterable that are false are removed.

Note that filter(function, iterable) is equivalent to [item for item in iterable if function(item)] if function is not None and [item for item in iterable if item] if function is None.

. . .

Ou seja, se passarmos None como valor para o parâmetro function, filter irá retornar uma nova lista contendo somente os elementos da lista original que não forem avaliados como False.

5 comentários sobre “Retirando elementos vazios de uma lista

  1. aee, Python Help voltando às origens com as dicas rápidas! \o/
    E citando código meu, quanta honra!! 😀

    Só lembrando que map também tem um default para None que é uma função identidade, útil em casos como:

    
    funcaoTransforma=None
    if ALGUMA_CONDICAO:
        funcaoTransforma=ALGUMA_FUNCAO
    return map(funcaoTransforma, ALGUMA_LISTA)
    

    Exercício: Fazer uma versão com list comprehensions e comparar.

  2. Pingback: Brincando com Listas | Python Help
  3. Pingback: Como funcionam as listas de Python? | Python Help

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s