Seite 1 von 1

Sublisten in einer Schleife erstellen

Verfasst: Donnerstag 29. November 2018, 10:20
von Ede1994
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. :?:

Re: Sublisten in einer Schleife erstellen

Verfasst: Donnerstag 29. November 2018, 10:29
von Ede1994
Ach verdammt...Fehler gefunden. Beim 2.Mal aufschreiben ist es mir aufgefallen :D

Re: Sublisten in einer Schleife erstellen

Verfasst: Donnerstag 29. November 2018, 11:24
von Sirius3
@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))

Re: Sublisten in einer Schleife erstellen

Verfasst: Donnerstag 29. November 2018, 12:26
von Ede1994
Danke!