使用.map以“列到行”方式转换2D数组

时间:2015-09-05 02:59:18

标签: swift

我有一个嵌套数组,它包含一堆“行”,并且包含一堆数据点。要将它们转换为“列”,我使用2个循环遍历嵌套数组并反转维度(在此处放置正确的术语)。 (第1部分)

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

是否可以通过地图完全逆转? 我已经把它放到了一个循环和一个地图上。 (第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)

1 个答案:

答案 0 :(得分:2)

尝试:

Swift2:

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

Swift1.2:

Intent intent = new Intent(MainActivity.this,MainActivity.class);
startActivity(intent);
finish();