我在學習如何處理Swift中的二維數組。這是一個兩維數組我的工作:在Swift中提取二維數組的一部分
var Image = [[1,2,3],[4,5,6],[7,8,9]]
如果我想只提取前兩行和第一列(2×2),我將如何做到這一點與斯威夫特的範圍操作符(...)。我試過以下內容:
let extractedImage = Image[0...1][0...1]
它沒有工作。它給了我前兩行,列完全打印。如何在不使用for循環的情況下處理這個問題?
我在學習如何處理Swift中的二維數組。這是一個兩維數組我的工作:在Swift中提取二維數組的一部分
var Image = [[1,2,3],[4,5,6],[7,8,9]]
如果我想只提取前兩行和第一列(2×2),我將如何做到這一點與斯威夫特的範圍操作符(...)。我試過以下內容:
let extractedImage = Image[0...1][0...1]
它沒有工作。它給了我前兩行,列完全打印。如何在不使用for循環的情況下處理這個問題?
或者image[0...1].map { $0[0...1].flatMap { $0 } }
的更安全的方式。 :)
Image[0...1]
返回[[1,2,3],[4,5,6]]
。
將第二個[0...1]
應用於同一個陣列[[1,2,3],[4,5,6]]
,該陣列獲得仍然爲[1,2,3]
和[4,5,6]
的前兩個對象。
你想要做的是將範圍應用到你可以使用地圖做的每個數組。
let extractedImage = Image[0...1].map({ $0[0...1] })
我不知道如果我理解你的問題完全,但這裏有越來越[[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]]
請解釋您的答案如何解決問題,這將有助於每個人更清楚地瞭解您的解決方案,以備將來參考。 – Aziz