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

1

Eu 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)]  

Eu não pude compreender o que exatamente " e não visto.add (i) " esta parte do código está fazendo como help (set.add) dá explicação abaixo:

add(...)
    Add an element to a set.
    This has no effect if the element is already present.

Aguardamos sua ajuda para entendê-lo

    
por Ibrahim Quraish 28.11.2017 / 07:27

1 resposta

1

A compreensão da lista itera sobre os valores da lista original / de entrada. Queremos que um valor seja adicionado à nova lista de saída se, e somente se, ela ainda não foi vista, daí a expressão condicional if i not in seen . Quando um novo valor é adicionado à lista nova / saída, o seen set precisa ser atualizado, daí a chamada da função seen.add(i) . No entanto, o método set.add() retorna None , que é avaliado como False . Portanto, o operador not é adicionado, para que not seen.add(i) sempre retorne True .

    
por 28.11.2017 / 07:46

Tags