unendlich große listen?
Wenn ich eine Liste in sich selbst speichere, dann wird sie als referenz auf sich selbst gespeichert, anstatt den aktuellen Stand der Liste hineinzuspeichern, wie das bei Tupeln der Fall ist. Da hab ich mal so ne frage: Ist es möglich, das einem das auch was nützt, z-b. dass sich da dann andere veränderte werte der Liste befinden, als sie im original waren? also z.B. eine Liste die alle Fibonachizahlen enthält oder so?
listen kopieren geht so:
ansonsten stell deine frage bitte nochmal, aber klarer.
Code: Alles auswählen
kopierteliste = neliste[:]
...meh...
Das klingt nach einem Missverständnis. Auch in Tupeln werden nur Referenzen gespeichert. Du kannst in einem Tupel aber keine Referenz auf das Tupel selbst speichern, weil alles was Du in ein Tupel packst, schon existieren muss bevor das Tupel an den Namen gebunden wird. Wenn das Tupel "fertig" ist, hast Du zwar einen Namen, kannst den aber nicht benutzen um das Tupel "in sich selbst" zu stecken, weil Tupel "immutable", d.h. nicht veränderbar sind.Krux hat geschrieben:Wenn ich eine Liste in sich selbst speichere, dann wird sie als referenz auf sich selbst gespeichert, anstatt den aktuellen Stand der Liste hineinzuspeichern, wie das bei Tupeln der Fall ist.
Wie sollte das passieren!? Nach folgendem Code...Da hab ich mal so ne frage: Ist es möglich, das einem das auch was nützt, z-b. dass sich da dann andere veränderte werte der Liste befinden, als sie im original waren? also z.B. eine Liste die alle Fibonachizahlen enthält oder so?
Code: Alles auswählen
In [6]: a = [1, 2, 3]
In [7]: a[2] = a
In [8]: a
Out[8]: [1, 2, <Recursion on list with id=-1214990132>]
Code: Alles auswählen
Namen | Objekte +-----+-+
+------>|<int>|1|
| | +-----+-+
| +-----+-+
| | +---->|<int>|2|
| | +-----+-+
+-+ | +------+|+|+-+
|a|--------->|<list>|o|o|o|
+-+ | +-->+------+-+-+|+
| |
| +---------------+
|
ja genau so, nur was bringt einem das, wenn das Element als letztes in der liste genau das selbe ist, wie die liste selbst? Ich suche nach einem Praktischen anwendungsbeispiel dafür. In der Uni hatten wir listen (in einen anderen Programmiersprache tScheme), die enthielten z.B. alle Fibonacizahlen, und waren somit unendlich lang. Die hat man rekursiv aufgebaut, nur wurde die rekursion erst bein aufrufen der listenelemente durchgeführt, und nicht beim erstellewn der liste. Da ist mir die Idee gekommen, das es sowas vieleicht auch geben könnte in Python, denn so bringt einem das ganze recht wenig.
Im Grunde entspricht das Generatoren: http://docs.python.org/tut/node11.html# ... 0000000000
[url=http://www.leckse.net/artikel/meta/profilieren]Profilieren im Netz leicht gemacht[/url]
Mit verschachtelten Listen lassen sich Bäume modellieren. Wenn man Referenzen auf die Listen selbst in die Listen steckt, kann man beliebige Graphen modellieren.Krux hat geschrieben:ja genau so, nur was bringt einem das, wenn das Element als letztes in der liste genau das selbe ist, wie die liste selbst? Ich suche nach einem Praktischen anwendungsbeispiel dafür.