Divisez la liste en listes plus petites de taille personnalisée
Lors de la division d'une liste en listes plus petites d'une taille spécifique, il peut être frustrant de rencontrer une division de liste incorrecte. Voyons comment modifier votre fonction splitList
pour nous assurer qu'elle est divisée avec précision en listes de taille 30 ou moins.
Le problème avec votre fonction d'origine est le calcul de la boucle : for (int i=(int)(Math.Ceiling((decimal)(locations.Count/nSize))); i>=0; i--)
. Au lieu de parcourir le nombre souhaité de sous-listes jusqu'à 0, vous effectuez une boucle à partir d'une valeur plus élevée, ce qui entraîne une division incorrecte.
La fonction mise à jour devrait être :
<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>
Dans cette version mise à jour, la boucle itère de 0 au nombre souhaité de sous-listes (numLists). Cela garantit que la fonction commence à se diviser à l'emplacement approprié. De plus, le code utilise List<float> subLocat = new List<float>(locations);
pour créer une copie de locations
, évitant ainsi le problème de la modification de la liste originale.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!