Re: [Python-de] Probleme mit listen

Stefan Behnel schrieb:
Es geht um Listen. Genauer gesagt um 2_Dimensionale Listen. Bei einer Dimension kann ich über liste.append() ein neues Element anhängen.
Listen sind so etwas wie Ordner in Dateisystemen
Na, ob die Analogie es wirklich verständlicher macht?
Mehrdimensionale Felder sind zusammenhängende gleichartige Daten, der logische ( nicht Speichermäßige) Zerlegung über interne Beschreibung (descriptor) erfolgt. Eine Liste ist ein eindimensionales Feld (aus pointer) deren Elemente auf "Objekte" verweisen.
Die gute Nachricht ist, dass das i.A. so gut funktioniert, dass mensch sich darüber fast nie Gedanken machen muss. Der einzige wirklich haarige Fall für Listen ist der, Elemente an einer Seite anzuhängen und an der anderen einzeln wieder rauszulöschen (also eine Queue).
Das ist wie beim editieren von Texten, nur das (etliche) statt (4 byte utf) Buchstaben (8 byte) Pointer verschoben werden.
Aber dafür gibt es den Datentyp "collections.deque", sollte mensch also gar nicht erst mit Listen versuchen.
Eine zusätzliche? Verkettung könnte beim indizierten Zugriff Rechenzeit kosten. Was anders dürfte es bei dictionary sein, wo der "indizierte" Zugriff vermutlich über hash-Tabellen geht; der in Zugriff über eine Verkettung. Hermann der hier allerdings bei der Realisierung nur vermutet. -- http://www.Hermann-Riemann.de

Hi, passend zum Thema Listen: "Why Python uses 0-based indexing" by @gvanrossum: https://plus.google.com/115212051037621986145/posts/YTUxbXYZyfi Grüße, Thomas

Hermann Riemann, 26.10.2013 18:03:
Das ist wie beim editieren von Texten, nur das (etliche) statt (4 byte utf) Buchstaben (8 byte) Pointer verschoben werden.
Bei so Formulierungen wie "4 byte utf Buchstaben" kreuseln sich mir die Fußnägel.
Aber dafür gibt es den Datentyp "collections.deque", sollte mensch also gar nicht erst mit Listen versuchen.
Eine zusätzliche? Verkettung könnte beim indizierten Zugriff Rechenzeit kosten.
Die Implementierung verwendet keine simple doppelt verkettete Liste sondern verwaltet Elemente wesentlich effizienter in Blöcken. Aber ja, für beliebige Indizierung ist diese Datenstruktur nicht gemacht, dafür gibt es (ta-da!) Listen. Der Anwendungsfall für deque ist im Wesentlichen der, den ich beschrieben habe.
Was anders dürfte es bei dictionary sein, wo der "indizierte" Zugriff vermutlich über hash-Tabellen geht;
Nicht nur vermutlich.
der in Zugriff über eine Verkettung.
"in" == "in" Operator? Oder was meinst du? Der "in" Operator verwendet bei dicts den selben Hash-Zugriff wie lesender und schreibender Zugriff.
Hermann der hier allerdings bei der Realisierung nur vermutet.
Kleiner Tipp: CPython ist Open-Source. Du musst gar nicht vermuten. http://hg.python.org/cpython/file/tip/ Stefan
participants (3)
-
Hermann Riemann
-
Stefan Behnel
-
Thomas Koch