Perl Brasil

Pesquisar

Documentação

Artigos

Planeta

Eventos

Comunidade

r1 - 06 Aug 2006 - JoenioCosta

Como remover os elementos duplicados de uma lista

Problema

Você precisa remover todos os elementos duplicados de uma lista.

Solução

Use um hash.

Discussão

Se a sua lista está ordenada, você pode remover os elementos iguais adjacentes (semelhante ao uniq do unix):

    undef $prev;
    @out = grep($_ ne $prev && ($prev = $_, 1), @in);

Na maioria dos casos, porém, você pode obter o mesmo efeito usando um hash:

    undef %saw;
    @out = grep(!$saw{$_}++, @in);

Mas, talvez você devesse estar usando um hash desde o início, não? smile

Comentários