julia - 在 Julia 语言中理解步骤不能是零错误?
问题描述
我需要一个 UnitRanges 向量,如下所示:[2:5, 3:6, 4:7, 5:8]
当我尝试运行此 (2:5):(5:8) 时,我收到“ArgumentError:步不能为零”的错误。
有没有办法使用 UnitRange 本身创建一个 UnitRange 数组?
解决方案
听起来您想映射或广播 :
两个参数中的元素。只需明确地这样做:
julia> map(:, 2:5, 5:8)
4-element Array{UnitRange{Int64},1}:
2:5
3:6
4:7
5:8
现在,理想情况下,您还可以将其编写为(2:5) .: (5:8)
——你可以在:
操作符上添加点来广播它——但是因为:
它被用于很多事情,而且因为这不是一个非常常见的用例,所以我们没有启用的点缀:
。但是,您可以使用非中缀形式和点:
julia> (:).(2:5, 5:8)
4-element Array{UnitRange{Int64},1}:
2:5
3:6
4:7
5:8
至于您收到的错误消息,这是因为首先:
要做的是确定长度,假设它的两个参数是标量。为此,它从第二个参数中减去第一个参数:
julia> (5:8) - (2:5)
ERROR: ArgumentError: step cannot be zero
这失败了,因为它试图创建一个有效3:0:3
且长度为 4 的步进范围。
推荐阅读
- flutter - 如何在颤动中将文档快照转换为流数据?
- python-3.6 - 在 Python 3 中并行化“for”循环
- html - 如何在 Html 中创建表格
- mysql - Laravel 复杂的雄辩关系
- c - 为什么我不能从 malloc 获得 2 GB?
- javascript - 我正在网站上设置 PayPal,并使用液体将购物车价值拉入 JS
- java - JAVA 方法返回意外值
- hyperledger-fabric - Hypereldger Fabric:没有创世块的引导排序器
- certificate - keytool 错误:java.lang.Exception:证书未导入,别名 mykey 已存在
- laravel - 不在 Laravel 7 中制作表格