Leider konnte ich nichts passendes finden. Deshalb frage ich euch.
Wie tief kann man Listen / Dictionaries verschachteln? Also z.B. :
Code: Alles auswählen
liste = [1, [2, [3, [4, [x, y]]]]]
verz = {1: {2: {3: {4: [x,y]}}}}
Code: Alles auswählen
liste = [1, [2, [3, [4, [x, y]]]]]
verz = {1: {2: {3: {4: [x,y]}}}}
Code: Alles auswählen
>>> giant = elem = []
>>>for i in xrange(100000):
>>> elem.append([])
>>> elem = elem[0]
>>> print giant
# Folgendes geht ja auch (ist 'unbegrenzt' tief):
>>> a = []
>>> a.append(a)
Code: Alles auswählen
eval('[' * 34 + ']' * 34)
Wie erbärmlich ist denn das? EinTrundle hat geschrieben:Folgender Code wirft bei mir (Python 2.5) z.B. einen `MemoryError`:Mit 33 wird der Code noch geparst.Code: Alles auswählen
eval('[' * 34 + ']' * 34)
Code: Alles auswählen
eval("("*33 + "42" + ")" * 33)
Könnte man auch über ein dict lösen:10111 hat geschrieben:@Leonidas: Sollte eigentlich ein binärer Baum werden. Aber vielleicht gibt es da auch bessere Möglichkeiten. Da ich so etwas leider noch nie programmiert habe, überlege ich erstmal in alle Richtungen.
Vielleicht ist eine Klasse mit einer Liste mit Folge-Elementen geeigneter?
Code: Alles auswählen
# dict: key = Node, values = children
btree = {1: [2, 3], 2: [4], 3: None, 4: None}
Code: Alles auswählen
# dict: key = Node, values = dict with "r", and "l" keys
btree = {1: {"r": 2, "l": 3}, 2: {"l": 4}, 3: None, 4: None}
Und diesen willst du einfach so im Quelltext drin stehen haben?10111 hat geschrieben:Sollte eigentlich ein binärer Baum werden.
Code: Alles auswählen
def list_tree(depth=10, l=None):
"""Erzeigt einen vollen Binaerbaum aus Listen, <depth> Ebenen tief
bleibt die Frage: wozu?"""
if depth >0:
if l is None: l=[]
l.append(list_tree(depth-1))
l.append(list_tree(depth-1))
else:
l = [None]
return l
tree= list_tree(16) # ab ca. 30 wird es erst spannend
print tree[0][0][0][0][0][0][0][0][0][0][0][0][0][0][0]