Sie können eine Liste nicht zu einer Menge hinzufügen, da Listen veränderbar sind, d. h. Sie können den Inhalt der Liste ändern, nachdem Sie sie der Menge hinzugefügt haben.
Sie können jedoch Tupel zu der Menge hinzufügen, da Sie den Inhalt eines Tupels nicht ändern können:
>>> a.add(('f', 'g'))
>>> print a
set(['a', 'c', 'b', 'e', 'd', ('f', 'g')])
bearbeiten : eine Erklärung: Die Dokumentation definiert eine set
como eine ungeordnete Sammlung von eindeutigen Hash-Objekten. Die Objekte müssen hashfähig sein, damit das Auffinden, Hinzufügen und Entfernen von Elementen schneller geht, als wenn man sich jedes einzelne Element ansieht, wenn man diese Operationen durchführt. Die verwendeten Algorithmen werden im Abschnitt Wikipedia-Artikel . Pythons Hashing-Algorithmen werden erklärt unter effbot.org und Pythons __hash__
Funktion in der Python-Referenz .
Einige Fakten:
- Elemente setzen wie auch Wörterbuchschlüssel müssen hashfähig sein
- Einige unhashable Datentypen:
list
: verwenden tuple
stattdessen
set
: verwenden frozenset
stattdessen
dict
: hat kein offizielles Gegenstück, aber es gibt einige Rezepte
- Objektinstanzen sind standardmäßig hashfähig, wobei jede Instanz einen eindeutigen Hash hat. Sie können dieses Verhalten außer Kraft setzen, wie in der Python-Referenz erläutert.