Función Python add() de conjunto en lista por comprensión

Función Python add() de conjunto en lista por comprensión

Me encontré con el siguiente código para eliminar duplicados de una lista:

seen = set(); print [i for i in list if i not in seen and not seen.add(i)]  

No pude comprender qué es exactamente "y no visto.add(i)"esta parte del código está haciendo lo mismoayuda(set.add)da la siguiente explicación:

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

Espero su ayuda para entenderlo.

Respuesta1

La comprensión de la lista itera sobre los valores de la lista original/de entrada. Queremos que se agregue un valor a la lista nueva/de salida si y solo si aún no se ha visto, de ahí la expresión condicional if i not in seen. Cuando se agrega un nuevo valor a la lista nueva/de salida, el seenconjunto debe actualizarse, de ahí la seen.add(i)llamada a la función. Sin embargo, el set.add()método devuelve None, que se evalúa como False. Por lo tanto notse agrega el operador, para que not seen.add(i)siempre devuelva True.

información relacionada