associação pythonbrasil[11] django zope/plone planet Início Logado como (Entrar)

Diferenças para "RemoverRepetidosLista"

Diferenças entre as versões de 1 e 11 (10 versões de distância)
Revisão 1e 2004-06-30 12:41:58
Tamanho: 648
Editor: 201009094066
Comentário:
Revisão 11e 2008-09-26 14:07:36
Tamanho: 2042
Editor: localhost
Comentário: converted to 1.6 markup
Deleções são marcadas assim. Adições são marcadas assim.
Linha 1: Linha 1:
#pragma section-numbers off
= Receita: RemoveRepetidosLista =

Função para remover elementos repetidos de uma lista.
Retorna uma nova lista.
Função para remover elementos repetidos de uma lista. Retorna uma nova lista.
Linha 8: Linha 4:
Linha 11: Linha 6:
Linha 23: Linha 17:
Linha 25: Linha 18:

== Exemplo de uso ==
Como é costume em Python, aqui está um outro jeito, que funciona em uma única linha. Observe que a informação da ordem dos elementos é perdida, pois a conversão passa por um dicionário (que não guarda a informação em ordem, mas garante a unicidade) e depois retorna a uma lista. Logo, é mais útil para se obter um conjunto em forma de lista do que para se obter uma lista ordenada:
Linha 30: Linha 22:
# lista é uma lista com elementos repetidos.
dict(zip(lista, lista)).keys()
}}}
A partir do Python 2.4 é possível utilizar-se do tipo de dados "Set", que obedece as restrições de conjuntos matemáticos para obter o mesmo efeito rapidamente, mas também com o problema de alterar a ordem dos elementos.
Linha 31: Linha 27:
{{{
#!python
lista_sem_repeticoes = list(set(lista_com_repeticoes))
}}}
É possível manter a ordem da lista usando uma lista temporária:

{{{
#!python
def RemoveRepetidosLista(lista):
    t = []
    [ t.append(item) for item in lista if not t.count(item) ]
    return t
}}}
É possível escrever o que está acima em uma linha:

{{{
#!python
def RemoveRepetidosLista(lista):
    return [item for item in lista if item not in locals()['_[1]']]
}}}
Esse último código trapaceia um pouco, usando a variável interna _[1] que representa a lista que estamos construindo.

== Exemplo de uso ==
{{{
#!python
Linha 32: Linha 53:
Linha 34: Linha 54:
Linha 37: Linha 56:
----

ralobao
== Mais informações ==
Consulte [[http://rstm.livejournal.com/4888.html|Uniq: remover elementos repetidos em uma lista em Python]].

Função para remover elementos repetidos de uma lista. Retorna uma nova lista.

Código

   1 def RemoveRepetidosLista(l):
   2     # cria um dicionario em branco
   3     dict = {}
   4     # para cada valor na lista l
   5     for word in l:
   6         # adiciona ao dicionario: valor:1
   7         # note que se for repetido o valor somente sobrescreve ele :)
   8         dict[word] = 1
   9     # retorna uma copia das 'keys'
  10     l[:] = dict.keys()
  11     return l

Como é costume em Python, aqui está um outro jeito, que funciona em uma única linha. Observe que a informação da ordem dos elementos é perdida, pois a conversão passa por um dicionário (que não guarda a informação em ordem, mas garante a unicidade) e depois retorna a uma lista. Logo, é mais útil para se obter um conjunto em forma de lista do que para se obter uma lista ordenada:

   1 # lista é uma lista com elementos repetidos.
   2 dict(zip(lista, lista)).keys()

A partir do Python 2.4 é possível utilizar-se do tipo de dados "Set", que obedece as restrições de conjuntos matemáticos para obter o mesmo efeito rapidamente, mas também com o problema de alterar a ordem dos elementos.

   1 lista_sem_repeticoes = list(set(lista_com_repeticoes))

É possível manter a ordem da lista usando uma lista temporária:

   1 def RemoveRepetidosLista(lista):
   2     t = []
   3     [ t.append(item) for item in lista if not t.count(item) ]
   4     return t

É possível escrever o que está acima em uma linha:

   1 def RemoveRepetidosLista(lista):
   2     return [item for item in lista if item not in locals()['_[1]']]

Esse último código trapaceia um pouco, usando a variável interna _[1] que representa a lista que estamos construindo.

Exemplo de uso

   1 lista_nova_sem_repeticao = RemoveRepetidosLista(lista)

Volta para CookBook.

Mais informações

Consulte Uniq: remover elementos repetidos em uma lista em Python.