我正在尝试学习如何在Swift中处理二维数组。这是我正在研究的双暗阵列:
var Image = [[1,2,3],[4,5,6],[7,8,9]]
如果我只想提取前两行和第一列(2x2),我将如何使用Swift的范围运算符(...)。我尝试了以下方法:
let extractedImage = Image[0...1][0...1]
它不起作用。它给了我前两行和列完全打印。如何在不使用for循环的情况下处理此问题?
答案 0 :(得分:2)
Image[0...1]
返回[[1,2,3],[4,5,6]]
。
第二个[0...1]
应用于同一个数组[[1,2,3],[4,5,6]]
,该数组获得前两个仍为[1,2,3]
和[4,5,6]
的对象。
您要做的是将范围应用于您可以使用map执行的每个阵列。
let extractedImage = Image[0...1].map({ $0[0...1] })
答案 1 :(得分:1)
或image[0...1].map { $0[0...1].flatMap { $0 } }
。 :)
答案 2 :(得分:0)
我不确定我是否完全理解你的问题,但这是获得[[1, 2], [4, 5]]
的更安全的方法
var images = [[1,2,3],[4,5,6],[7,8,9]]
let result = images.prefix(2).map { Array($0.prefix(2)) }
print(result) // [[1, 2], [4, 5]]