You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Dart中将[[1,2],[3,4]]转换为[[1,3],[2,4]]?

Dart 二维列表转置实现:将 [[1,2],[3,4]] 转为 [[1,3],[2,4]]

这个需求本质是矩阵转置——把原二维列表的行和列互换。下面提供两种实用的实现方法:

方法一:手动嵌套遍历(直观易懂)

通过两层循环,依次提取原列表每一列的元素,组成转置后的每一行:

void main() {
  final original = [[1, 2], [3, 4]];
  final rowCount = original.length;
  final colCount = original[0].length; // 假设所有子列表长度一致

  final transposed = <List<int>>[];
  for (var col = 0; col < colCount; col++) {
    final newRow = <int>[];
    for (var row = 0; row < rowCount; row++) {
      newRow.add(original[row][col]);
    }
    transposed.add(newRow);
  }

  print(transposed); // 输出: [[1, 3], [2, 4]]
}

方法二:利用高阶函数(简洁写法)

借助 List.generate 和 map 方法,用更紧凑的代码实现转置:

void main() {
  final original = [[1, 2], [3, 4]];

  final transposed = List.generate(
    original[0].length,
    (colIndex) => original.map((row) => row[colIndex]).toList(),
  );

  print(transposed); // 输出: [[1, 3], [2, 4]]
}

注意事项

如果原二维列表是不规则的(子列表长度不同),需要先处理边界逻辑,比如取最大列数、补默认值或做异常判断,避免索引越界。

内容的提问来源于stack exchange,提问作者Utopion

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 05:35:29