ios - 创建 nXn 矩阵,其值递增 Swift
问题描述
我试图找到一种简单的方法来创建具有自增值的矩阵,即如果是 3x3 数组,那么它应该看起来像 [[0,1,2],[3,4,5],[6,7,8]]
当我做下面这样的事情时,我可以得到全零
var arr = Array(repeating: Array(repeating: 0, count: 3), count: 3)
为了实现,我需要遍历元素并重新分配递增的值。取而代之的是,我可以在不使用 for 循环的情况下遵循任何快速方法吗?
解决方案
一种可能的方法是map()
在行和列的范围上使用:
let nrows = 3 // Number of rows
let ncols = 3 // Number of columns
let matrix = (0..<nrows).map { row in (0..<ncols).map { col in ncols * row + col } }
print(matrix) // [[0, 1, 2], [3, 4, 5], [6, 7, 8]]
外部(0..<nrows).map
将每个行号映射到一个数组(“行”),内部(0..<ncols).map
将每个列号映射到一个矩阵条目。
使用一点“元组魔法”,您可以分配自动递增的值:
var entry = 0
let matrix = (0..<nrows).map { _ in (0..<ncols).map { _ in (entry, entry += 1).0 } }
但这不是我真正推荐的。
推荐阅读
- java - 如何最大化服务器发送事件打开连接?
- nullpointerexception - SOAP Web 服务客户端抛出 SOAPFaultException:空指针异常
- stripe-payments - 充值卡多次
- selenium - 有没有办法在 css 选择器 selenuim 中加入条件
- javascript - 如何以角度形式构建接口
- javascript - 当有人关闭它时如何立即自动运行电子窗口应用程序?
- c# - 使用 Stripe 和 ASP.NET WebForm 的示例结帐
- c++ - 我是否也应该包含 string.h 即使它存在于头文件中?
- angular - 在 const angular 上创建泛型类型
- r - (列表)对象不能被强制在 r 中键入“整数”