リストをカスタム サイズの小さなリストに分割します
リストを特定のサイズの小さなリストに分割する場合、リストの分割が正しく行われないとイライラすることがあります。関数 splitList
を変更して、サイズ 30 以下のリストに正確に分割できるようにする方法を見てみましょう。
元の関数の問題はループ計算です: for (int i=(int)(Math.Ceiling((decimal)(locations.Count/nSize))); i>=0; i--)
。必要な数のサブリストから 0 まで反復するのではなく、より高い値からループすることになり、結果として不正確な分割が発生します。
更新された関数は次のようになります:
<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>
この更新されたバージョンでは、ループは 0 から必要な数のサブリスト (numLists) まで反復されます。これにより、関数が適切な位置で分割を開始することが保証されます。 さらに、このコードは List<float> subLocat = new List<float>(locations);
を使用して locations
のコピーを作成し、元のリストが変更される問題を回避します。
以上がリストをカスタム サイズ (例: 30 以下) の小さなリストに正しく分割するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。