Seite 1 von 1
Eine Liste in zwei weitere Listen unterteilen
Verfasst: Mittwoch 20. Oktober 2021, 11:15
von terminator
Guten Tag,
ich habe folgendes Problem: Ich möchte eine Liste, wo jedes Listenelement aus zwei Zahlen besteht(getrennt durch ein Leerzeichen), in zwei Listen unterteilen. Das heißt ich möchte die erste Zahl im Listenelement in eine Liste(w1) und die zweite Zahl im Listenelement in eine andere Liste(w2). Jedoch habe ich damit Schwierigkeiten dies hinzubekommen.
Liste1 = ['-50 -300' , '15 -70']
#und als Ausgabe:
w1 =['-50', '15']
w2 =['-300', '-70']
Danke schon mal für die Hilfe!
Re: Eine Liste in zwei weitere Listen unterteilen
Verfasst: Mittwoch 20. Oktober 2021, 17:57
von Sirius3
Und wo konkret sind die Schwierigkeiten? Weißt Du, wie man mit Listen arbeitet? Oder mit Strings?
Re: Eine Liste in zwei weitere Listen unterteilen
Verfasst: Mittwoch 20. Oktober 2021, 18:42
von terminator
Sirius3 hat geschrieben: Mittwoch 20. Oktober 2021, 17:57
Und wo konkret sind die Schwierigkeiten? Weißt Du, wie man mit Listen arbeitet? Oder mit Strings?
Ich habe mit split() versucht die einzelnen Listenelemente zu teilen jedoch bekomme ich dort nur die ersten Zahlen der Listenelemente ausgegeben. Ich möchte aber als Ausgabe auch noch eine zweite Liste mit den zweiten Zahlen von jedem Listenelement:
for c in Liste1:
w1=c.split()
print(w1[0])
Re: Eine Liste in zwei weitere Listen unterteilen
Verfasst: Mittwoch 20. Oktober 2021, 18:51
von Sirius3
Du solltest dringend an Deiner Namenswahl für Variablen arbeiten. Warum benutzt Du nur einzelne Buchstaben mit einer 1 drangehängt? Das macht keinen Sinn. Variablennamen sollten sprechend sein.
Was glaubst Du, macht die [0] in Deinem Code?
Re: Eine Liste in zwei weitere Listen unterteilen
Verfasst: Mittwoch 20. Oktober 2021, 18:55
von terminator
Sirius3 hat geschrieben: Mittwoch 20. Oktober 2021, 18:51
Du solltest dringend an Deiner Namenswahl für Variablen arbeiten. Warum benutzt Du nur einzelne Buchstaben mit einer 1 drangehängt? Das macht keinen Sinn. Variablennamen sollten sprechend sein.
Was glaubst Du, macht die [0] in Deinem Code?
Alles klar!
Die [0] in meinem Code ist die Index Nummer und theoretisch müsste dann mir nur das erste Listenelement von w1 ausgegeben werden was jedoch nicht passiert.
Re: Eine Liste in zwei weitere Listen unterteilen
Verfasst: Mittwoch 20. Oktober 2021, 19:18
von Sirius3
Was denkst Du, passiert statt dessen?
Re: Eine Liste in zwei weitere Listen unterteilen
Verfasst: Mittwoch 20. Oktober 2021, 19:32
von terminator
Sirius3 hat geschrieben: Mittwoch 20. Oktober 2021, 19:18
Was denkst Du, passiert statt dessen?
Er gibt mir das zweite Listenelement aus (der ersten Zahlen): Also in dem Fall 15.
Was ich jedoch nicht verstehe weil es doch eigentlich das zweite Element sein müsste und somit [1]
Re: Eine Liste in zwei weitere Listen unterteilen
Verfasst: Mittwoch 20. Oktober 2021, 20:15
von Sirius3
Bei mir ist die Ausgabe
also jeweils das erste Element.
Re: Eine Liste in zwei weitere Listen unterteilen
Verfasst: Mittwoch 20. Oktober 2021, 20:18
von __blackjack__
@terminator: Nein, es gibt Dir das erste Listenelement aus. Du denkst aber offenbar über die falsche Liste nach, denn es gibt Dir das erste Element von `w1` aus. In jedem Schleifendurchlauf. Also für *jedes* `c`. Für das erste im ersten Schleifendurchlauf, und für das zweite, im zweiten Schleifendurchlauf.
Re: Eine Liste in zwei weitere Listen unterteilen
Verfasst: Mittwoch 20. Oktober 2021, 20:50
von terminator
Sirius3 hat geschrieben: Mittwoch 20. Oktober 2021, 20:15
Bei mir ist die Ausgabe
also jeweils das erste Element.
Stimmt! Hatte vergessen print(w1[0]) in die For-Schleife einzurücken. Ich habe jedoch keine Ahnung wie ich jetzt die zweiten Zahlen der Listenelemente in eine zusätzliche Liste hineinbekomme.
Re: Eine Liste in zwei weitere Listen unterteilen
Verfasst: Mittwoch 20. Oktober 2021, 22:03
von __blackjack__
@terminator: Naja Du musst halt mit dem Index 1 darauf zugreifen. Oder, um diese undurchsichtige Indexhampelei zu vermeiden, das Ergebnis von `split()` an zwei (sinnvolle) Namen aufteilen. Und die kannst Du dann jeweils dafür verwenden um sie an die passende Liste anzuhängen. Die Du vorher erstellen musst, also *vor* dieser Schleife. Und die erste davon darf dann entweder nicht `w1` heissen, oder Du darfst den Namen in dem am Ende alle ersten Elemente landen sollen, nicht in der Schleife für ein Teilergebnis verwenden.
Code: Alles auswählen
In [200]: Liste1 = ['-50 -300' , '15 -70']
In [201]: w1, w2 = map(list, more_itertools.unzip(map(str.split, Liste1)))
In [202]: w1
Out[202]: ['-50', '15']
In [203]: w2
Out[203]: ['-300', '-70']
Re: Eine Liste in zwei weitere Listen unterteilen
Verfasst: Mittwoch 20. Oktober 2021, 22:38
von terminator
__blackjack__ hat geschrieben: Mittwoch 20. Oktober 2021, 22:03
@terminator: Naja Du musst halt mit dem Index 1 darauf zugreifen. Oder, um diese undurchsichtige Indexhampelei zu vermeiden, das Ergebnis von `split()` an zwei (sinnvolle) Namen aufteilen. Und die kannst Du dann jeweils dafür verwenden um sie an die passende Liste anzuhängen. Die Du vorher erstellen musst, also *vor* dieser Schleife. Und die erste davon darf dann entweder nicht `w1` heissen, oder Du darfst den Namen in dem am Ende alle ersten Elemente landen sollen, nicht in der Schleife für ein Teilergebnis verwenden.
Code: Alles auswählen
In [200]: Liste1 = ['-50 -300' , '15 -70']
In [201]: w1, w2 = map(list, more_itertools.unzip(map(str.split, Liste1)))
In [202]: w1
Out[202]: ['-50', '15']
In [203]: w2
Out[203]: ['-300', '-70']
Muss ich dafür noch irgend etwas importieren?
Re: Eine Liste in zwei weitere Listen unterteilen
Verfasst: Donnerstag 21. Oktober 2021, 06:06
von Dennis89
Hallo,
ja und zwar 'more_itertools'. Dass wäre das hier:
https://more-itertools.readthedocs.io/en/stable/
Grüße
Dennis
Re: Eine Liste in zwei weitere Listen unterteilen
Verfasst: Donnerstag 21. Oktober 2021, 07:24
von /me
Man kann es natürlich auch ohne `more_itertools` schreiben.
Und wenn man die Werte von w1 und w2 nicht unbedingt als Liste braucht, sondern ein Tupel reicht, dann wird es noch simpler.
Re: Eine Liste in zwei weitere Listen unterteilen
Verfasst: Donnerstag 21. Oktober 2021, 12:38
von terminator
Vielen Dank für die ganze Hilfe!