Ich habe 3 Listen, die ich auf eine bestimmte Weise kombiniere (mit izip). dann führe ich eine Berechnung auf der kombinierten Tupelliste durch. Sobald die Berechnung durchgeführt ist, muss ich diese Operation rückgängig machen, um die ursprüngliche Liste zurück zu bekommen (allerdings mit einigen geänderten Werten). Gibt es eine einfache pythonische Art, dies zu tun?Entpacken Sie Einträge aus der Liste der Tupel in Python 2.7
grouped = []
med_done = 0
lrg_done = 0
#While items exist in small, pair up one item from each list
grouped.extend(list(izip(sml,med,lrg)))
done = len(sml)
# While items remain in med, pair up one from med an two from lrg
grouped.extend(list(izip(med[done:],lrg[done::2],lrg[(done+1)::2])))
done = done + (2*(len(med)-len(sml)))
# Finish pairing up remaining items from lrg
grouped.extend(list(izip_longest(lrg[done::3],lrg[(done+1)::3],lrg[(done+2)::3],fillvalue = '-')))
Dies erzeugt:
smlBinary:[6 6 7 7 7 8 6 8 7]
medBinary:[4 3 4 3 3 3 5 5 4 5 3 5 3 3 4 4]
lrgBinary:[0 1 2 0 0 2 1 1 1 1 1 2 2 2 0 2 2 1 2 1 2 1 0 1 2 1 0 2 1 2 0 1 0 1 0 1]
Grouped[(6, 4, 0), (6, 3, 1), (7, 4, 2), (7, 3, 0), (7, 3, 0), (8, 3, 2), (6, 5, 1), (8, 5, 1), (7, 4, 1), (5, 0, 1), (3, 2, 0), (5, 0, 2), (3, 1, 1), (3, 1, 1), (4, 1, 2), (4, 2, 2), (1, 2, 1), (0, 2, 1), (2, 0, 1), (0, 1, 0), (1, '-', '-')]
FRAGE: Jetzt gibt es eine ähnliche Technik, die ich zurück zu ‚entkoppeln‘ diese Elemente verwenden konnten die ursprünglichen Listen zu bekommen?
Hallo @Anddrrw, Wenn es gleichmäßig gepaart wäre, würde Ihre Methode perfekt funktionieren, aber die Art, wie die Paarung funktioniert, bedeutet, dass ich keine einzige Methode für die gesamte "gruppierte" Liste verwenden kann. zumindest muss es in 3 Stücken gemacht werden. –