Sublisten in einer Schleife erstellen

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
Benutzeravatar
Ede1994
User
Beiträge: 72
Registriert: Dienstag 2. Mai 2017, 12:41

Hallo,
Folgendes Problem: Ich habe eine Funktion (lids()), die eine Liste als Ergebnis zurückgibt. Nun möchte ich diese Listen in einer Schleife in eine neue Liste als Sublisten speichern. So sieht das bei mir aus:

Code: Alles auswählen

for i in range(len(aktiv_list)):
  data = [line.strip().split() for line in open(aktiv_list[i])]
  #txt-Datei einlesen, extrahieren und als Liste zurueckgeben
  data_events = [line.strip().split() for line in open(schlaf_list[i])]

  #gibt die zu bearbeitende Datei aus
  print aktiv_list[i]

  ende2 = lids() #def lids(), gibt Liste mit den Ergebnissen zurück
  ende3 = [[] for j in range(len(aktiv_list))]
???????
  
Am Schluss habe ich jetzt schon viel versucht um die Liste ende3 mit den Ergebnissen zu füllen, hat aber alles nicht funktioniert. Wie wäre hier vorzugehen?
Ich habe z.B. folgendes probiert:

Code: Alles auswählen

ende3.insert(i,ende2)
Aber so füllt er immer nur eine Subliste mit den Ergebnissen und die anderen Sublisten werden nicht abgespeichert. :?:
Benutzeravatar
Ede1994
User
Beiträge: 72
Registriert: Dienstag 2. Mai 2017, 12:41

Ach verdammt...Fehler gefunden. Beim 2.Mal aufschreiben ist es mir aufgefallen :D
Sirius3
User
Beiträge: 17754
Registriert: Sonntag 21. Oktober 2012, 17:20

@Ede1994: Statt über einen Index zu iterieren nimmt man `zip`, wie Dir schon mehrfach in anderen Threads gesagt wurde. Dateien, die man öffnet sollte man auch wieder schließen, am besten mit dem with-Statement. Das Erzeugen von `data` und `data_events` sind zwei identische Codes, die man am in eine Funktion auslagert. Was macht `lids`? Da es keine Parameter bekommt, ist es sinnlos, das innerhalb einer Schleife aufzurufen. ende2 und ende3 sind schlechte Variablennamen, da Nummern keine Aussagekraft haben, und ende sich jeder die Frage stellt "ende von was?".

Eingerückt wird immer mit 4 Leerzeichen pro Ebene, nicht 2. Datentypen sollten nicht in Variablennamen vorkommen, also aktiv_filenames statt aktiv_list.

Sonst verstehe ich Dein Problem nicht. Listen füllt man mit `append`. Da ist es egal, ob darin nun Listen oder irgendwelche anderen Objekte gespeichert werden.

Ich rate mal, was Du möchtest:

Code: Alles auswählen

def read_file(filename):
    with open(filename) as lines:
        return [l.split() for l in lines]

results = []
for aktiv_filename, schlaf_filename in zip(aktiv_filenames, schlaf_filenames):
    aktiv_data = read_file(aktiv_filename)
    schlaf_data = read_file(schlaf_filename)
    results.append(lids(aktiv_data, schlaf_data))
Benutzeravatar
Ede1994
User
Beiträge: 72
Registriert: Dienstag 2. Mai 2017, 12:41

Danke!
Antworten