Seite 1 von 1

Leere Liste initialisieren

Verfasst: Mittwoch 5. Juli 2006, 14:39
von Thanatos83
Hallo,

ich würde ganz gerne eine leere Liste initialisieren in der lauter 3er Tripel sind.

Also: [ [[...],[...],[...]] , [[...],[...],[...]], .......

Wie macht man das?

Verfasst: Mittwoch 5. Juli 2006, 14:55
von keppla

Code: Alles auswählen

mylist = [ [[],[],[]] for i in range(length) ]
sofern die innersten ... nicht für irgendwas stehen, was man erraten soll.

Verfasst: Mittwoch 5. Juli 2006, 19:13
von keppla
Achja: Es bliebe die Frage, wofür du das brauchst.
Wozu möchtest du da leere Elemente drin haben? Wahrscheinlich wäre es besser, sie bei Bedarf einzufügen.

Verfasst: Donnerstag 6. Juli 2006, 01:59
von Thanatos83
Naja, es sollen ja x, y und z werte drinstehen. Wenn ich die Liste nicht gleich als solches initialisiere kommt die Meldung "list index out of range".

Deswegen die Initialisierung.

Verfasst: Donnerstag 6. Juli 2006, 09:43
von keppla
Dann vermute ich, dass du es so probierst:

Code: Alles auswählen

lst = []
lst[0] = [[1,2,3],[4,5,6],[7,8,9]]
Das funktioniert in Python nicht.
Stattdessen wäre ein

Code: Alles auswählen

lst = []
lst.append( [[1,2,3],[4,5,6],[7,8,9]] )
angebrachter. Es hängt einfach eine Struktur hinten an die Liste an.

Wenn du "Lücken" in der Liste brauchst, sollten die nicht mit Leeren kordinaten gefüllt werden, sondern mit None, oder noch besser: du nutzt ein Dict, da das imho die Problematik besser abbildet.

Ausserdem könnte man sich überlegen, ob nicht die Dinge, die du in die Liste tust, durch eine Klasse dargestellt werden könnten:

Code: Alles auswählen

class Triangle
  def __init__(self, a, b, c):
     """ a, b, c sind koordinaten """
     self.a = a
     self.b = b
     self.c = c
dann sähe ein Einfügen so aus:

Code: Alles auswählen

lst = []
t = Triangle( (1,2,3), (4,5,6), (7,8,9) )
lst.append(t)