Aufteilen einer Liste in N ungefähr gleiche Teile
Das Aufteilen einer Liste in gleiche Teile ist ein häufiges Programmierproblem. Eine besondere Herausforderung besteht darin, eine gleichmäßige Aufteilung zu erreichen, wenn die Listenlänge nicht durch die gewünschte Anzahl von Teilen teilbar ist.
Erwägen Sie beispielsweise, eine Liste mit 7 Elementen in zwei gleiche Teile aufzuteilen. Idealerweise sollte jeder Teil 3 bzw. 4 Elemente haben.
Der bereitgestellte Code chunks() unterteilt die Liste in gleich große Elementblöcke, dies führt jedoch möglicherweise nicht zu einem sogar gespalten. Alternativ könnte durch Transponieren der Blöcke eine gleichmäßige Aufteilung erreicht werden, aber die Reihenfolge der Elemente würde dadurch gestört.
Ein effizienterer Ansatz ist die Verwendung eines Listengenerators, wie im verbesserten Code gezeigt:
def split(a, n): k, m = divmod(len(a), n) return (a[i*k+min(i, m):(i+1)*k+min(i+1, m)] for i in range(n))
Dieser Code berechnet die ideale Chunk-Größe k und die restlichen Elemente m. Anschließend wird ein Generator erzeugt, der die Liste durchläuft und Teile der gewünschten Größe erstellt.
Zum Beispiel:
>>> list(split(range(11), 3)) [[0, 1, 2, 3], [4, 5, 6, 7], [8, 9, 10]]
Diese Lösung bietet eine effiziente Methode zum Aufteilen einer Liste in ungefähr gleiche Teile , wobei die Elementreihenfolge erhalten bleibt.
Das obige ist der detaillierte Inhalt vonWie teile ich eine Liste in ungefähr gleiche Teile auf?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!