Heim >Backend-Entwicklung >C++ >Wie teilt man eine Liste korrekt in kleinere Listen einer benutzerdefinierten Größe auf (z. B. 30 oder weniger)?
Teilen Sie die Liste in kleinere Listen mit benutzerdefinierter Größe auf
Beim Aufteilen einer Liste in kleinere Listen einer bestimmten Größe kann es frustrierend sein, auf eine falsche Listenaufteilung zu stoßen. Sehen wir uns an, wie Sie Ihre Funktion splitList
ändern können, um sicherzustellen, dass sie genau in Listen mit einer Größe von 30 oder weniger aufgeteilt wird.
Das Problem mit Ihrer ursprünglichen Funktion ist die Schleifenberechnung: for (int i=(int)(Math.Ceiling((decimal)(locations.Count/nSize))); i>=0; i--)
. Anstatt von der gewünschten Anzahl an Unterlisten bis 0 zu iterieren, durchlaufen Sie eine Schleife von einem höheren Wert, was zu einer falschen Aufteilung führt.
Die aktualisierte Funktion sollte sein:
<code class="language-c#">public static List<List<float>> splitList(List<float> locations, int nSize = 30) { List<List<float>> list = new List<List<float>>(); int numLists = (int)(Math.Ceiling((decimal)(locations.Count / nSize))); for (int i = 0; i < numLists; i++) { List<float> subLocat = new List<float>(locations); // 创建locations的副本 if (subLocat.Count >= ((i * nSize) + nSize)) subLocat.RemoveRange(i * nSize, nSize); else subLocat.RemoveRange(i * nSize, subLocat.Count - (i * nSize)); Debug.Log("Index: " + i.ToString() + ", Size: " + subLocat.Count.ToString()); list.Add(subLocat); } return list; }</code>
In dieser aktualisierten Version iteriert die Schleife von 0 bis zur gewünschten Anzahl von Unterlisten (numLists). Dadurch wird sichergestellt, dass die Funktion an der entsprechenden Stelle mit der Aufteilung beginnt. Darüber hinaus verwendet der Code List<float> subLocat = new List<float>(locations);
, um eine Kopie von locations
zu erstellen, wodurch das Problem einer Änderung der Originalliste vermieden wird.
Das obige ist der detaillierte Inhalt vonWie teilt man eine Liste korrekt in kleinere Listen einer benutzerdefinierten Größe auf (z. B. 30 oder weniger)?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!