dart 转换列表架构列表:[[1,2]、[3,4]] ->[[1,3]、[2,4]]

u91tlkcl  于 2023-01-18  发布在  其他
关注(0)|答案(3)|浏览(143)

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

yc0p9oo0

yc0p9oo01#

你的问题应该详细说明,你应该概括背后的逻辑。
在您的特定情况下,解决方案可能是:

const myList = [[1, 2],[3, 4]];
 final newList = [myList.map((e) => e.first).toList(), myList.map((e) => e.last).toList()];
xbp102n0

xbp102n02#

假设您的问题是将列表的所有前几个元素收集到一个新列表中,并将列表的所有最后几个元素收集到另一个列表中。
您可以使用以下代码:

const presentList = [[1, 2],[3, 4]];
 final updatedList = [presentList.map((e) => e.first).toList(), presentList.map((e) => e.last).toList()];

现在updatedList中的内容为[[1,3][2,4]]

eaf3rand

eaf3rand3#

如果你想要一般的“转置”操作,即取一个等长的列表的列表,并创建一个第一,第二等元素的列表的列表,那么:

List<List<T>> transpose<T>(List<List<T>> source) {
  if (source.isEmpty) return source;
  var length = source.first.length;
  // Maybe add check that all lists have same length.
  return [for (var i = 0; i < length; i++) 
    [for (var j = 0; j < source.length; j++) source[j][i]]];
}

如果您关心验证输入,可以检查所有列表是否具有与length相同的长度:

for (var i = 1; i < source.length; i++) {
    if (source[i].length != length) {
      throw ArgumentError.value(source, "source", 
        "All lists must have same length");
    }
  }

相关问题