Python add()-Funktion des Sets in der Listenableitung

Python add()-Funktion des Sets in der Listenableitung

Ich bin auf den folgenden Code gestoßen, um Duplikate aus einer Liste zu entfernen:

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

Ich konnte nicht verstehen, was genau "und nicht seen.add(i)" dieser Teil des Codes tut alsHilfe (einstellen.hinzufügen)gibt folgende Erklärung:

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

Ich freue mich auf Ihre Hilfe zum Verständnis

Antwort1

Die Listenableitung iteriert über die Werte der Original-/Eingabeliste. Wir möchten, dass ein Wert genau dann zur neuen/Ausgabeliste hinzugefügt wird, wenn er noch nicht gesehen wurde, daher der bedingte Ausdruck if i not in seen. Wenn ein neuer Wert zur neuen/Ausgabeliste hinzugefügt wird, seenmuss der Satz aktualisiert werden, daher der seen.add(i)Funktionsaufruf. Die set.add()Methode gibt jedoch zurück None, was zu ausgewertet wird False. Daher notwird der Operator hinzugefügt, sodass not seen.add(i)immer zurückgegeben wird True.

verwandte Informationen