Encontrei o código abaixo para remover duplicatas de uma lista:
seen = set(); print [i for i in list if i not in seen and not seen.add(i)]
Não consegui compreender o que exatamente "e não visto.add(i)"esta parte do código está fazendo comoajuda(set.add)dá explicação abaixo:
add(...)
Add an element to a set.
This has no effect if the element is already present.
Aguardo sua ajuda para entendê-lo
Responder1
A compreensão da lista itera sobre os valores da lista original/de entrada. Queremos que um valor seja adicionado à lista de novos/saídas se e somente se ainda não tiver sido visto, daí a expressão condicional if i not in seen
. Quando um novo valor é adicionado à lista de novos/saídas, o seen
conjunto deve ser atualizado, daí a seen.add(i)
chamada de função. No entanto, o set.add()
método retorna None
, que é avaliado como False
. Portanto o not
operador é adicionado, de modo que not seen.add(i)
sempre retorna True
.