class wegedaten(object):
def __init__(self):
self.elemente =[]
self..liste = [[]]
self.anzahl = 0
self.zeile = 0
def eintrag(self,object):
self.elemente.append(object)
self.anzahl = self.anzahl + 1
if self.anzahl == 3:
self.liste[self.zeile].append(self.elemente)
self.anzahl = 0
self.elemente = []
def ausgabe(self):
print(self.liste)
w = wegedaten()
w.eintrag(12)
w.eintrag(13)
w.eintrag(14)
w.eintrag (15)
w.eintrag(16)
w.eintrag(17)
w.ausgabe()
ist die Ausgabe : [[[12,13,14],[15,16,17]]]
warum sind hier [[[ .... ]]]
was ich möchte ist
[[12,13,14],[15,16,17]]
erster eintrag ist [12,13,14]
zweiter eintrag [15,16,17]
und dies in einer Liste
kann mir jemand eine Hilfe geben/was mach ich falsch ??? Danke
frage zu list bzw. class
- __blackjack__
- User
- Beiträge: 14033
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
@wolsue: Also ich bekomme da erst einmal einen Syntaxfehler. Und wenn ich den behebe, an anderer Stelle gleich noch einen. Und danach noch ein paar. Es wäre nett wenn Du Code postest der auch lauffähig ist.
Die verschachtelten Listen bekommst Du weil Du sagst das Du derartig verschachtelte Listen haben willst. Nicht im Beitragstext, aber halt im Code. Du hast eine leere Liste in einer leeren Liste und hängst an die innere Liste dann im Laufe des Programms Listen an. Dann bekommst Du genau das was Du siehst.
Wenn Du das anders möchtest, musst Du das halt im Code anders machen. Und zum Beispiel nicht mit ``[[]]`` anfangen sondern nur mit ``[]`` und die Listen dort direkt anhängen. Die Attribute `zeile` und `anzahl` sind auch redundant. Du hängst ja immer hinten an, dazu braucht man sich die ”Zeile” nicht zu merken, denn `append()` hängt ja automatisch hinten an. Und `anzahl` ist immer die Länge von `elemente`. Man kann die Länge von Listen abfragen, die muss man sich nicht redundant irgendwo merken.
Klassennamen schreibt man in Python MixedCase, also `Wegedaten` statt `wegedaten`. `wegedaten` wäre dann ein besserer Name für ein Exemplar dieser Klasse, anstelle von `w`.
Funktions- und Methodennamen beschreiben üblicherweise Tätigkeiten. Also `ausgeben()` statt `ausgabe()`.
Die verschachtelten Listen bekommst Du weil Du sagst das Du derartig verschachtelte Listen haben willst. Nicht im Beitragstext, aber halt im Code. Du hast eine leere Liste in einer leeren Liste und hängst an die innere Liste dann im Laufe des Programms Listen an. Dann bekommst Du genau das was Du siehst.
Code: Alles auswählen
In [5]: xs = [[]]
In [6]: ys = [1, 2, 3]
In [7]: xs[0].append(ys)
In [8]: xs
Out[8]: [[[1, 2, 3]]]
In [9]: xs[0].append(ys)
In [10]: xs
Out[10]: [[[1, 2, 3], [1, 2, 3]]]
Klassennamen schreibt man in Python MixedCase, also `Wegedaten` statt `wegedaten`. `wegedaten` wäre dann ein besserer Name für ein Exemplar dieser Klasse, anstelle von `w`.
Funktions- und Methodennamen beschreiben üblicherweise Tätigkeiten. Also `ausgeben()` statt `ausgabe()`.
Code: Alles auswählen
#!/usr/bin/env python3
class Wegedaten(object):
def __init__(self):
self.elemente = list()
self.liste = list()
def eintrag(self, value):
self.elemente.append(value)
if len(self.elemente) == 3:
self.liste.append(self.elemente)
self.elemente = []
def ausgeben(self):
print(self.liste)
def main():
wegedaten = Wegedaten()
for value in [12, 13, 14, 15, 16, 17]:
wegedaten.eintrag(value)
wegedaten.ausgeben()
if __name__ == '__main__':
main()
„A life is like a garden. Perfect moments can be had, but not preserved, except in memory. LLAP” — Leonard Nimoy's last tweet.
Oder einfacher, ohne den Overhead einer eigenen Klasse:
Code: Alles auswählen
eintraege = [12, 13, 14, 15, 16, 17]
wegedaten = list(zip(*[iter(eintraege)] * 3)
print(wegedaten)