Seite 1 von 1
Liste in neue Liste konvertieren
Verfasst: Mittwoch 2. Februar 2011, 12:17
von api
Hallo zusammen,
ich habe mal ne wahrscheinlich wirklich simple Frage - sehe aber den Wald vor lauter Bäumen nicht.
Wie kann ich diese Liste
in die folgende Liste umwandeln?
Ich verwende Python 2.6
Ist doch bestimmt simple, oder?
CU,
API
Re: Liste in neue Liste konvertieren
Verfasst: Mittwoch 2. Februar 2011, 12:41
von busfahrer
Hallo
das geht vieleicht auch anders/besser, aber dafür beschäftige ich mich zu wenig mit der Materie
Code: Alles auswählen
liste_1 = ['s71,s80', 's79']
liste_2 = liste_1[0].split(",")
liste_2.append(liste_1[1])
liste_2
['s71', 's80', 's79']
Gruß...busfahrer
Re: Liste in neue Liste konvertieren
Verfasst: Mittwoch 2. Februar 2011, 12:42
von cofi
Code: Alles auswählen
>>> a = ['s71,s80', 's79']
>>> reduce(lambda l, i: l + i.split(','), a, [])
['s71', 's80', 's79']
Re: Liste in neue Liste konvertieren
Verfasst: Mittwoch 2. Februar 2011, 14:12
von api
@cofi: Die Lösung ist genial. So was habe ich gesucht. Danke.
@busfahrer: Danke auch für den Versuch. Da ich aber durchaus Listen mit mehr Elementen habe (hatte ich nicht erwähnt, ok), funktioniert die Lösung von @cofi besser.
Re: Liste in neue Liste konvertieren
Verfasst: Mittwoch 2. Februar 2011, 15:20
von yipyip
Also ich würde ja lieber
Code: Alles auswählen
In [20]: a = ['s71,s80', 's79', 'a12,b23,c34']
In [21]: sum((x.split(',') for x in a), [])
Out[21]: ['s71', 's80', 's79', 'a12', 'b23', 'c34']
sagen. Oder mit etwas erweiterter Funktionalität:
Code: Alles auswählen
In [22]: a = ['s71,s80', 's79', 'a12, b23, c34 ']
In [23]: [x.strip() for x in sum((x.split(',') for x in a), [])]
Out[23]: ['s71', 's80', 's79', 'a12', 'b23', 'c34']
yipyip
Re: Liste in neue Liste konvertieren
Verfasst: Mittwoch 2. Februar 2011, 18:34
von BlackJack
@api: cofi's Lösung ist sicher nicht genial. Genau wie yipyip's mit dem `sum()` haben beide ein besch* Laufzeitverhalten weil das "addieren" von zwei Listen immer eine neue erstellt in die die alten beiden hineinkopiert werden. Das heisst für jedes Element der ursprungsliste wird eine neue Liste erstellt und das Zwischenergebnis unnötig in der Gegeng herum kopiert.
Eine effizientere Lösung wäre eine ganz normale Schleife:
Code: Alles auswählen
result = list()
for item in a_list:
result.extend(item.split(','))
Re: Liste in neue Liste konvertieren
Verfasst: Mittwoch 2. Februar 2011, 19:06
von cofi
BlackJack hat geschrieben:@api: cofi's Lösung ist sicher nicht genial.
Ich wollte schon dazuschreiben, dass es eher ein Witz war, hab dann gedacht, dass die mangelnde Lesbarkeit genug abschreckt .. dem war wohl nich so
