Leere Liste initialisieren

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Thanatos83
User
Beiträge: 12
Registriert: Dienstag 9. Mai 2006, 18:56

Mittwoch 5. Juli 2006, 14:39

Hallo,

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

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

Wie macht man das?
Cu Thanatos83

Rettet die Wälder, esst mehr Biber!!!
Benutzeravatar
keppla
User
Beiträge: 483
Registriert: Montag 31. Oktober 2005, 00:12

Mittwoch 5. Juli 2006, 14:55

Code: Alles auswählen

mylist = [ [[],[],[]] for i in range(length) ]
sofern die innersten ... nicht für irgendwas stehen, was man erraten soll.
Benutzeravatar
keppla
User
Beiträge: 483
Registriert: Montag 31. Oktober 2005, 00:12

Mittwoch 5. Juli 2006, 19:13

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.
Thanatos83
User
Beiträge: 12
Registriert: Dienstag 9. Mai 2006, 18:56

Donnerstag 6. Juli 2006, 01:59

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.
Cu Thanatos83

Rettet die Wälder, esst mehr Biber!!!
Benutzeravatar
keppla
User
Beiträge: 483
Registriert: Montag 31. Oktober 2005, 00:12

Donnerstag 6. Juli 2006, 09:43

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)
Antworten