Heim > Backend-Entwicklung > Python-Tutorial > Wie teile ich eine Liste in ungefähr gleiche Teile auf?

Wie teile ich eine Liste in ungefähr gleiche Teile auf?

Patricia Arquette
Freigeben: 2024-11-18 05:55:02
Original
333 Leute haben es durchsucht

How to Split a List into Approximately Equal Parts?

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))
Nach dem Login kopieren

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]]
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage