Unterschiede der API von set() und list(), warum?

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Benutzeravatar
jens
Moderator
Beiträge: 8483
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Donnerstag 15. Mai 2008, 09:31

Ich experimentiere gerade ein wenig mit set() rum... Dabei Frage ich mich gerade, warum die API anders ist als die von list() ?

z.B. ein neues Objekt anhängen, geht bei einer liste mit .append() bei einem set aber mit .add(), warum?

CMS in Python: http://www.pylucid.org
GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
CM
User
Beiträge: 2464
Registriert: Sonntag 29. August 2004, 19:47
Kontaktdaten:

Donnerstag 15. Mai 2008, 09:37

Vielleicht weil etwas an eine geordnete Struktur anhängen etwas Anderes ist als etwas zu einer ungeordneten Struktur hinzufügen? Ich fände die Erklärung jedenfalls plausibel.

Gruß,
Christian
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Donnerstag 15. Mai 2008, 09:52

jens hat geschrieben:Dabei Frage ich mich gerade, warum die API anders ist als die von list() ?
Weil Mengen und Listen nicht das gleiche sind. Ein Append besagt, dass etwas am Ende angehängt wird. Dies wäre bei einem Set eine falsche Sicherheit, denn wenn man etwas isn Set hinzufügt kann es sein, dass bei ``list(dein_set)`` es am Ende angezeigt wird. Kann aber auch nicht, da werden keine Sicherheiten gegeben. ``insert`` passt ebenso nicht, da man bei Sets nicht definieren kann, wo etwas eingefügt wird.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
Benutzeravatar
jens
Moderator
Beiträge: 8483
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Donnerstag 15. Mai 2008, 09:56

Hm. Ja ok, das leuchtet mir ein ;)

CMS in Python: http://www.pylucid.org
GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
sma
User
Beiträge: 3018
Registriert: Montag 19. November 2007, 19:57
Wohnort: Kiel

Donnerstag 15. Mai 2008, 19:16

Ich würde sagen, dass ist historisch gewachsen.

Ich fände add() für eine Liste ebenfalls angemessen. Die erste Collection-Bibliothek war meines Wissens die von Smalltalk (um 1980 herum) und dort hatte man sich bemüht, so viel Polymorphismus wie möglich zu benutzen, um die Anzahl der Methodennamen, die man sich merken muss, so klein wie möglich zu halten. Wer ein späteres Beispiel möchte, schaue sich die Collection-Klassen von Java an, da heißt es auch add() für List und Set.

Stefan
mitsuhiko
User
Beiträge: 1790
Registriert: Donnerstag 28. Oktober 2004, 16:33
Wohnort: Graz, Steiermark - Österreich
Kontaktdaten:

Donnerstag 15. Mai 2008, 20:25

sma hat geschrieben:Wer ein späteres Beispiel möchte, schaue sich die Collection-Klassen von Java an, da heißt es auch add() für List und Set.
In Mono auch. Find ich aber beides nicht so toll, append sagt eindeutiger was es tut.
TUFKAB – the user formerly known as blackbird
Antworten