我有一个嵌套数组,其中包含一堆"行",这些行包含一堆数据点。为了将它们转换为"列",我使用了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]
}
}