Seite 1 von 1
Wie kann man zwei lIsten zu einer kombinieren, so dass die Elemente abwechselnd vorkommen
Verfasst: Montag 25. Januar 2016, 14:07
von Noranora
Hallo!
Ich meine das in etwa so:
Code: Alles auswählen
blumen=[rose, tulpe, nelke, sonnenblume, gänseblume]
farben= [rot, rosa, weiss, gelb, weiss]
ich möchte die Listen so zusammenfassen, dass dort nachher eine Liste steht:
blumen_und_farben=[rose,rot,tulpe, rose, nelke, weiss,sonnenblume, gelb, gänseblume, weiss]
Wie bekomme ich das hin, das müsste doch auch ohen Dictionäry zu machen sein, oder?
LG
Re: Wie kann man zwei lIsten zu einer kombinieren, so dass die Elemente abwechselnd vorkommen
Verfasst: Montag 25. Januar 2016, 14:13
von Sirius3
@Noranora: wenn Du jeweils zwei zusammengehörige Dinge hast, willst Du sie weder in zwei getrennten Listen, noch in einer Liste hintereinander haben, sondern in einer Liste als Tuple:
Code: Alles auswählen
blumen=["rose", "tulpe", "nelke", "sonnenblume", "gänseblume"]
farben= ["rot", "rosa", "weiss", "gelb", "weiss"]
blumen_und_farben = zip(blumen, farben)
# [('rose', 'rot'), ('tulpe', 'rosa'), ('nelke', 'weiss'), ('sonnenblume', 'gelb'), ('gänseblume', 'weiss')]
Re: Wie kann man zwei lIsten zu einer kombinieren, so dass die Elemente abwechselnd vorkommen
Verfasst: Montag 25. Januar 2016, 23:43
von snafu
Warum soll es denn kein Dictionary sein?
Aber wenn es wirklich so sein soll wie vom OP gewünscht:
Code: Alles auswählen
from itertools import chain
list(chain.from_iterable(zip(blumen, farben)))
Ohne `itertools`:
Code: Alles auswählen
result = []
for pair in zip(blumen, farben):
result.extend(pair)
print(result)
Re: Wie kann man zwei lIsten zu einer kombinieren, so dass die Elemente abwechselnd vorkommen
Verfasst: Dienstag 26. Januar 2016, 00:31
von BlackJack
@snafu: Ich würde sage weder noch:
Re: Wie kann man zwei lIsten zu einer kombinieren, so dass die Elemente abwechselnd vorkommen
Verfasst: Dienstag 26. Januar 2016, 00:39
von snafu
@BlackJack
Der OP schrieb, dass er folgendes will:
Code: Alles auswählen
blumen_und_farben=[rose,rot,tulpe, rose, nelke, weiss,sonnenblume, gelb, gänseblume, weiss]
Wenn das exakt so gewünscht ist, dann benötigt man durchaus `chain()` bzw `extend()`.
Re: Wie kann man zwei lIsten zu einer kombinieren, so dass die Elemente abwechselnd vorkommen
Verfasst: Dienstag 26. Januar 2016, 07:36
von bwbg
Die Frage ist auch, ob der OP das wollen soll
Wenn wir davon ausgehen, dass er die Daten serialisieren möchte, dann
chain ; in allen anderen Fällen
zip. Listen sollten gleichartige Werte enthalten. Pflanzen und (deren) Farben sind zwei Paar Schuhe und sollten als Wertepaare (2-Tupel) aufgefasst werden.
Mal als Pseudo-Haskell Notation:
Code: Alles auswählen
zip :: [a] -> [b] -> [(a, b)]
chain :: [a] -> [b] -> [c]