【问题标题】:How to implement a decrementing for loop in Julia?如何在 Julia 中实现递减 for 循环?
【发布时间】:2020-06-18 07:34:45
【问题描述】:

我知道在python我可以做以下事情。

for i in range(10, 0, -1):
    print(i)

将输出:

10
9
8
7
6
5
4
3
2
1 

我对@9​​87654324@ 非常陌生,我知道我可以按如下方式创建正常循环。

for i=1:10
    println(i)
end

直觉上,我尝试了如下方法(因为我认为它的行为类似于 python 的 range([start], stop[, step]) 函数)。

for i=10:1:-1
    println(i)
end

虽然它没有失败,但它也没有打印任何东西。我做错了什么?

有没有直观的方式在julia 中向后循环?

【问题讨论】:

    标签: loops for-loop julia decrement


    【解决方案1】:

    试试这个:

    julia> for i=10:-1:1
               println(i)
           end
    10
    9
    8
    7
    6
    5
    4
    3
    2
    1
    

    或者这个

    julia> for i=reverse(1:10)
               println(i)
           end
    10
    9
    8
    7
    6
    5
    4
    3
    2
    1
    

    正如@phipsgabler 所说,您也可以使用:

    julia> range(10, 1, step=-1)
    10:-1:1
    

    再次获得相同的结果(请注意,您必须使用1 作为第二个索引)。

    根据我的实践,range 通常与 length 关键字参数一起使用更有用:

    julia> range(10, 1, length=10)
    10.0:-1.0:1.0
    

    (请注意,在这种情况下,您得到的向量是 Float64 而不是 Int

    【讨论】:

    • 啊...我在考虑python...谢谢...
    • 另请注意,reverse 用于范围是有效的。如果你写reverse(1:10),你只会得到10:-1:1
    • range(10, 0, step=-1),以接近 Python 语法。
    • 我已经更新了答案。感谢您的评论(请注意 1 而不是 0range 作为第二个参数)
    猜你喜欢
    • 2021-08-10
    • 2014-02-15
    • 2021-10-28
    • 1970-01-01
    • 2012-04-16
    • 2021-09-26
    • 2014-02-03
    • 2011-10-15
    • 2023-01-02
    相关资源
    最近更新 更多