我试图用零填充一个数组,但找不到一种简洁的方法来快速执行此操作。如果我有数组 x = [1,2,3 ; 4,5,6; 7,8,9] 在matlab中我可以使用命令
y = [zeros(1,3+2);zeros(3,1),x,zeros(3,1);zeros(1,3+2)]
给出所需的输出数组 [0,0,0,0,0; 0,1,2,3,0 ; 0,4,5,6,0 ; 0,7,8,9,0 ; 0,0,0,0,0]
然而到目前为止,在一个快速的操场上,我只能单独引用每个元素以正确形成新数组。
到目前为止我尝试过的方法使用 x 作为输入和 y 作为输出,第一个类似于 matlab,
var x = [[1,2,3,],[4,5,6],[7,8,9]]
var y = [[0,0,0,0,0],[0,x[0],0],[0,x[1],0],[0,x[2],0],[0,0,0,0,0]]
第二个是循环
for i in 0 ..< x.count + 1 {
if i == 0 || i == x.count - 1 {
y[i] = [0,0,0,0,0]
}
else{
y[i] = [0, x[i-1] ,0]
}
}
这是给定的输出,而不是看起来像 Xcode 游乐场预览中的标准数组。
[[0, 0, 0, 0, 0], [0, […], 0], [0, 0, 0, 0, 0], [0, […], 0], [0, 0, 0, 0, 0]]
使用代码也很奇怪地打印到控制台
for i in 0 ..< y.count {
print("\(y[i])")
}
输出是
(
0,
0,
0,
0,
0
)
(
0,
(
1,
2,
3
),
0
)
(
0,
0,
0,
0,
0
)
(
0,
(
7,
8,
9
),
0
)
(
0,
0,
0,
0,
0
)
与预期相反
[0, 0, 0, 0, 0]
[0, 1, 2, 3, 0]
[0, 4, 5, 6, 0]
[0, 7, 8, 9, 0]
[0, 0, 0, 0, 0]
做这个的最好方式是什么?