Как реализовать уменьшение l oop в Julia? - PullRequest
3 голосов
/ 18 июня 2020

Я знаю, что в python я могу сделать следующее.

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

Что будет выводить:

10
9
8
7
6
5
4
3
2
1 

Я новичок в julia и Я знаю, что могу создавать обычные циклы следующим образом.

for i=1:10
    println(i)
end

Интуитивно я попробовал что-то вроде следующего (так как я думал, что он ведет себя аналогично функции python range([start], stop[, step])).

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

Хоть и не сработало, но и ничего не напечатало. Что я делаю не так?

Есть ли интуитивный способ l oop назад в julia?

1 Ответ

8 голосов
/ 18 июня 2020

Попробуйте это:

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)

...