Função Python add() de conjunto na compreensão da lista

Função Python add() de conjunto na compreensão da lista

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 seenconjunto 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 notoperador é adicionado, de modo que not seen.add(i)sempre retorna True.

informação relacionada