在 Dart 中,如何 copy/clone 一个二维列表?
In Dart, how can copy/clone a 2D list?
我有 2 个二维列表声明如下,在 Dart 中 copy/clone 二维列表(I 到 N)的正确快速方法是什么?
List<List<double>>? I = List.generate(
3, (i) => List.generate(1000 * 1000, (j) => 0.0, growable: false),
growable: false);
List<List<double>>? N = List.generate(
3, (i) => List.generate(1000 * 1000, (j) => 0.0, growable: false),
我可以遍历每个元素并复制它,但这不是执行此操作的有效方法。
for (int i = 0; i < I!.length; i++)
for (int j = 0; j < I![i].length; j++) N![i][j] = I![i][j];
List
List.copyRange(列出目标, int at, 列出源, [int?start, int?end])
list.setRange(int start, int end, Iterable iterable, [int skipCount = 0])
for (int i = 0; i < I!.length; i++)
List.copyRange<int>(N![i], 0, I![i])
for (int i = 0; i < I!.length; i++)
N![i].setRange<int>(0, N![i].length,I![i])
这将重置项目指针
List.copyRange(N!,0, I!.map<List<int>>((item)=>item.toList()).toList());
给定一个名为 original
的 List<List<double>>
,我将复制它:
List<List<double>> copy = [for (var sublist in original) [...sublist]];
请注意,这将创建一个新的 List<List<double>>
;如果你必须改变现有的,那么使用 List.setRange
会更合适。
我有 2 个二维列表声明如下,在 Dart 中 copy/clone 二维列表(I 到 N)的正确快速方法是什么?
List<List<double>>? I = List.generate(
3, (i) => List.generate(1000 * 1000, (j) => 0.0, growable: false),
growable: false);
List<List<double>>? N = List.generate(
3, (i) => List.generate(1000 * 1000, (j) => 0.0, growable: false),
我可以遍历每个元素并复制它,但这不是执行此操作的有效方法。
for (int i = 0; i < I!.length; i++)
for (int j = 0; j < I![i].length; j++) N![i][j] = I![i][j];
List List.copyRange(列出目标, int at, 列出源, [int?start, int?end])
list.setRange(int start, int end, Iterable iterable, [int skipCount = 0])
for (int i = 0; i < I!.length; i++)
List.copyRange<int>(N![i], 0, I![i])
for (int i = 0; i < I!.length; i++)
N![i].setRange<int>(0, N![i].length,I![i])
这将重置项目指针
List.copyRange(N!,0, I!.map<List<int>>((item)=>item.toList()).toList());
给定一个名为 original
的 List<List<double>>
,我将复制它:
List<List<double>> copy = [for (var sublist in original) [...sublist]];
请注意,这将创建一个新的 List<List<double>>
;如果你必须改变现有的,那么使用 List.setRange