![](https://secure.gravatar.com/avatar/bc58aee8780cbebcd549f4839477eab0.jpg?s=120&d=mm&r=g)
Guten Tag, ich bin neu hier und auch neu in Sachen Python. Früher habe ich mal ein paar andere Sprachen gelernt, aber lange nichts mehr gemacht. Jetzt will ich mir mal Python anschauen und habe direkt ein Problem. Es geht um Listen. Genauer gesagt um 2_Dimensionale Listen. Bei einer Dimension kann ich über liste.append() ein neues Element anhängen. Jetzt wollte ich dass auf 2 Dimensionen ausweiten. Klappt aber irgendwie nicht. habe liste[].append() liste[1].append() liste[[]].append() versucht. Nun bin ich in einer Sackgasse! Im Netz habe ich leider nichts gefunden. Bin sicher dass hier jemand dabei ist der dass besser kann und mir ev. ein Beispiel zeigen kann. Vielen Dank! Gruß, Goce
![](https://secure.gravatar.com/avatar/79ae7c34fe890958af12751422bbecea.jpg?s=120&d=mm&r=g)
Ich verstehe nicht ganz die Struktur, kannst du mal konkrete Listen angeben, die du erzeugen willst? Also einfach mit {...} die Struktur zeigen Von meinem iPhone gesendet Am 25.10.2013 um 13:01 schrieb "Goce F." <ilinden@arcor.de>:
Guten Tag,
ich bin neu hier und auch neu in Sachen Python. Früher habe ich mal ein paar andere Sprachen gelernt, aber lange nichts mehr gemacht. Jetzt will ich mir mal Python anschauen und habe direkt ein Problem.
Es geht um Listen. Genauer gesagt um 2_Dimensionale Listen. Bei einer Dimension kann ich über liste.append() ein neues Element anhängen. Jetzt wollte ich dass auf 2 Dimensionen ausweiten. Klappt aber irgendwie nicht.
habe liste[].append() liste[1].append() liste[[]].append() versucht.
Nun bin ich in einer Sackgasse!
Im Netz habe ich leider nichts gefunden.
Bin sicher dass hier jemand dabei ist der dass besser kann und mir ev. ein Beispiel zeigen kann.
Vielen Dank!
Gruß, Goce _______________________________________________ python-de maillist - python-de@python.org https://mail.python.org/mailman/listinfo/python-de
![](https://secure.gravatar.com/avatar/9a4688b662a367919c25c0ce50cc3da0.jpg?s=120&d=mm&r=g)
Hi Goce, On 25.10.2013 13:01, Goce F. wrote:
habe liste[].append() liste[1].append() liste[[]].append() versucht.
kurze Antwort: vielleicht meintest du einfach: liste[0].append(...) Listenindizes fangen bei Null an!
Es geht um Listen. Genauer gesagt um 2_Dimensionale Listen.
Lange Antwort: Listen sind keine Arrays. Auf Elemente kann erst zugriffen werden, wenn sie angelegt wurden. "2-dimensionale" Listen sind einfach nur verschachtelte Listen. Dabei können die inneren Listen beliebige Längen haben, z.B. [[1, 2, 3], [1, 2], [1, 2, 3, 4], ...] Eine strikte Mehrdimensionalität ist nur gewährleistet, wenn du die Liste selbst vorher in allen Dimensionen initialisierst, z.B. hier drei Dimensionen: l = [] for i in range(3): l.append([]) for j in range(3): l[i].append(j) Zum Schluss noch ein Tipp: bessere Hilfe bekommst du, wenn du nicht nur sagst, "funktioniert nicht", sondern auch den konkreten Code und die Fehlermeldung postest. Chris
![](https://secure.gravatar.com/avatar/160bbafa4adfe0bdbac50a0bbf694789.jpg?s=120&d=mm&r=g)
Hallo Goce, schaue dir mal folgenden Link an. http://stackoverflow.com/questions/6667201/how-to-define-two-dimensional-arr ay-in-python Und hier ein kleines Beispiel, welches dein Problem verdeutlichen sollte.
import pprint Matrix = [[0 for x in xrange(5)] for x in xrange(5)] pprint.pprint(Matrix) [[0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0]] Matrix.append([1,2,3,4,5]) pprint.pprint(Matrix) [[0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [1, 2, 3, 4, 5]] Matrix[5][2] 3
Gruß, Steffen -----Ursprüngliche Nachricht----- Von: python-de [mailto:python-de-bounces+steffen.froemer=gns-systems.de@python.org] Im Auftrag von Goce F. Gesendet: Freitag, 25. Oktober 2013 13:01 An: python-de@python.org Betreff: [Python-de] Probleme mit listen Guten Tag, ich bin neu hier und auch neu in Sachen Python. Früher habe ich mal ein paar andere Sprachen gelernt, aber lange nichts mehr gemacht. Jetzt will ich mir mal Python anschauen und habe direkt ein Problem. Es geht um Listen. Genauer gesagt um 2_Dimensionale Listen. Bei einer Dimension kann ich über liste.append() ein neues Element anhängen. Jetzt wollte ich dass auf 2 Dimensionen ausweiten. Klappt aber irgendwie nicht. habe liste[].append() liste[1].append() liste[[]].append() versucht. Nun bin ich in einer Sackgasse! Im Netz habe ich leider nichts gefunden. Bin sicher dass hier jemand dabei ist der dass besser kann und mir ev. ein Beispiel zeigen kann. Vielen Dank! Gruß, Goce _______________________________________________ python-de maillist - python-de@python.org https://mail.python.org/mailman/listinfo/python-de
![](https://secure.gravatar.com/avatar/ef1e99cb3e741efddf1d0eb83a6be73b.jpg?s=120&d=mm&r=g)
Goce F. 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 Man kann da beliebige Dateien äh Daten reinsetzen und rausnehmen. a=["ab",3] for x in a: print(type(x)) b=[a,7] a[1]=b del a[0] a+=["naja",17//4] print(b) print(a[0][0][0][0][0]) Hermann der nicht sicher ist, wie häufig eine Liste neu angelegt wird, wenn immer nur ein Element angehängt wird. -- http://www.Hermann-Riemann.de
![](https://secure.gravatar.com/avatar/9a4688b662a367919c25c0ce50cc3da0.jpg?s=120&d=mm&r=g)
On 25.10.2013 14:38, Hermann Riemann wrote:
Hermann der nicht sicher ist, wie häufig eine Liste neu angelegt wird, wenn immer nur ein Element angehängt wird.
Nur einmal beim Erzeugen der Liste. Das Memory-Management im Hintergrund ist abhängig von der Python-Implementierung. Deswegen ist dies hier: s = [] for blah in blub: s.append(blah) print("".join(s)) auch i.A. effektiver als: s = "" for blah in blub: s += blah print(s) denn im zweiten Beispiel wird in jedem Schleifendurchlauf ein neues Stringobjekt angelegt. Chris
![](https://secure.gravatar.com/avatar/ad29c30a0fc3ee32545f2653205411bb.jpg?s=120&d=mm&r=g)
Hermann Riemann, 25.10.2013 14:38:
Goce F. 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?
Man kann da beliebige Dateien äh Daten reinsetzen und rausnehmen.
a=["ab",3] for x in a: print(type(x)) b=[a,7] a[1]=b del a[0] a+=["naja",17//4] print(b) print(a[0][0][0][0][0])
Hermann der nicht sicher ist, wie häufig eine Liste neu angelegt wird, wenn immer nur ein Element angehängt wird.
"neu angelegt" wird die Liste als Objekt bei einem append() nicht. Aber alle paar Male muss Python für die neuen Elemente mehr Speicher freimachen. Weil das Aufwand ist, wird dabei dann nicht nur Platz für ein einzelnes Element geschaffen, sondern gleich für mehrere. 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). Aber dafür gibt es den Datentyp "collections.deque", sollte mensch also gar nicht erst mit Listen versuchen. Stefan
![](https://secure.gravatar.com/avatar/2d867f8cad7dc44d68fe84459dad3418.jpg?s=120&d=mm&r=g)
Goce F. <ilinden@arcor.de> wrote:
habe liste[].append() liste[1].append() liste[[]].append() versucht.
liste[] gibt es nicht. Solche (ähnlichen) Konstrukte gibt es in PHP, wie z. B. $liste[] = "foo"; Bei Python muss man die Liste erst anlegen. liste = [] Jetzt kann man mit append() Objekte hinzu fügen. Inkl. andere Listen. Und wenn man eine Liste einer Liste hinzu fügt, hat man schon eine neue Dimension. liste = [] liste.append([]) Jetzt ist liste eine Liste mit einer leeren Liste als 1. Element. Will man dieser etwas hinzu fügen: liste[0].append('x') liste[0].append('y') liste ==> [['x', 'y']] liste[0][1] ==> 'y' liste[0].extend(['a', 'b', 'c']) liste ==> [['x', 'y', 'a', 'b', 'c']] Hilfe zur Selbsthilfe: Mit "dir(liste)" (oder auch "dir([])") kannst Du Dir interaktiv alle Attribute (inkl. den Methoden) von Listen-Objekten anzeigen lassen. Weißt Du nicht was z. B. die extend()-Methode macht, gibt es mit "help([].extend)" eine Hilfe zu nur genau dieser Methode. |Help on built-in function extend: | |extend(...) | L.extend(iterable) -- extend list by appending elements from the iterable Oft sind die Namen selbsterklärend und man kommt mit dir() und help() schon recht weit.
participants (7)
-
Christopher Arndt
-
Goce F.
-
Hermann Riemann
-
Sebastian Bechtel
-
Stefan Behnel
-
Stefan Scholl
-
Steffen Frömer