Alle Elemente aus der Liste muessen verwenden werden, aber die Reihenfolge spielt keine rolle. Es wuerde gut, wenn es moeglich weare Summen zu bilden damit alle Listen eine gleich maessige Verteilung bekommen koennten. Summen muessen nicht gleich sein nur aehnlich, weil es manchmal nicht moeglich identische Summen zu bilden.
Ich habe diesen code gefunden, aber es funktioniert nicht genaue wie es moechte.
Code: Alles auswählen
from pprint import pprint
def chunks(l, n):
return [l[i:i+n] for i in range(0, len(l), n)]
a = [('a', 3),('b', 2),('c', 3),('d', 2),('e', 2)]
pprint(chunks(a,1))
#output
#orginal -> [[('a', 3)], [('b', 2)], [('c', 3)], [('d', 2)], [('e', 2)]]
#gut -> [('a', 3),('b', 2),('c', 3),('d', 2),('e', 2)]
#am besten == gut
pprint(chunks(a,2))
#output
#orginal -> [[('a', 3), ('b', 2)], [('c', 3), ('d', 2)], [('e', 2)]]
#ok -> [[('a', 3), ('b', 2), ('c', 3)], [('d', 2), ('e', 2)]]
#am besten -> [[('a', 3), ('c', 3)], [('b', 2), ('d', 2), ('e', 2)]]
pprint(chunks(a,3))
#output
#orginal -> [[('a', 3), ('b', 2), ('c', 3)], [('d', 2), ('e', 2)]]
#ok -> [[('a', 3), ('b', 2)], [('c', 3), ('d', 2)], [('e', 2)]]
#am besten -> [[('a', 3), ('b', 2)], [('d', 2), ('e', 2)], [('c', 3)]]
pprint(chunks(a,4))
#output
#orginal -> [[('a', 3), ('b', 2), ('c', 3), ('d', 2)], [('e', 2)]]
#ok -> [[('a', 3), ('b', 2)], [('c', 3)], [('d', 2)], [('e', 2)]]
#am besten -> [[('d', 2), ('b', 2)], [('c', 3)], [('a', 3)], [('e', 2)]]
pprint(chunks(a,5))
#output
#orginal -> [[('a', 3), ('b', 2), ('c', 3), ('d', 2), ('e', 2)]]
#orginal == ok == am besten
Vielen Dank im Voraus.