以"columns to rows"方式使用 .map 转换 2D 数组



我有一个嵌套数组,其中包含一堆"行",这些行包含一堆数据点。为了将它们转换为"列",我使用了2个循环来遍历嵌套数组并反转维度(在这里使用正确的术语)。(第1部分)

目前我正在尝试尽可能减少循环的数量,并使用。map .filter和。reduce.

有可能用map得到一个完全的反转吗?我已经设置了一个循环和一个地图。(第2部分)

我卡住了,因为你不能把$0放两次。

(这是非常友好的操场)

第1部分:

var rowsArray : [[Int]] = []
for iA in 0..<10 {
    rowsArray.append([])
    for iB in 0..<2 {
        rowsArray[iA].append(iA * iB)
    }
}
var columnsArray : [[Int]] = []
for _ in 0..<rowsArray[0].count {
    columnsArray.append([])
}

for iA in 0..<rowsArray.count {
    let currentRow = rowsArray[iA]
    for iB in 0..<currentRow.count {
        let currentInt = currentRow[iB]
        columnsArray[iB].append(currentInt)
    }
}

第2部分:

var secondColumnsArray : [[Int]] = []
for iA in 0..<rowsArray[0].count {
    let column = rowsArray.map { $0[iA] }
    secondColumnsArray.append(column)
}
print(rowsArray)
print(columnsArray)
print(secondColumnsArray)

尝试:

Swift2:

let columnsArray = rowsArray[0].indices.map { col in
    rowsArray.indices.map { row in
        rowsArray[row][col]
    }
}

Swift1.2:

let columnsArray = map(indices(rowsArray[0])) { col in
    map(indices(rowsArray)) { row in
        rowsArray[row][col]
    }
}

相关内容

  • 没有找到相关文章

最新更新