1404
Comentário:
|
← Revisão 11e 2008-09-26 14:07:36 ⇥
2042
converted to 1.6 markup
|
Deleções são marcadas assim. | Adições são marcadas assim. |
Linha 1: | Linha 1: |
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 5: | Linha 4: |
Linha 8: | Linha 6: |
Linha 20: | Linha 17: |
Linha 22: | Linha 18: |
Linha 30: | Linha 25: |
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: |
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 36: | Linha 31: |
É possível manter a ordem da lista usando uma lista temporária: | |
Linha 37: | Linha 33: |
{{{ #!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. |
|
Linha 39: | Linha 50: |
Linha 44: | Linha 54: |
Volta para CookBook. | |
Linha 45: | Linha 56: |
Volta para CookBook. | == 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:
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:
É possível escrever o que está acima em uma linha:
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.