Как получить список чисел от 1 до n в Юлии? - PullRequest
5 голосов
/ 07 октября 2019

В MATLAB вы можете написать 1: n. Есть ли что-то похожее на эту запись в Юлии?

Ответы [ 2 ]

7 голосов
/ 07 октября 2019

Да, есть кое-что очень похожее на 1:n Матлаба в Джулии. Это 1:n.

Хотя есть некоторые различия. Matlab 1:n создает «вектор-строку», что важно, поскольку Matlab выполняет итерации по столбцам. Если вы посмотрите на 1:n забавный Matlab, он волшебным образом превращается в плотный массив, в котором хранятся все его элементы, но если вы тщательно избегаете смотреть на него, я думаю, что он может избежать выделения места для него полностью - именно поэтому линтер Matlab рекомендует(1:n) вместо [1:n].

Напротив, 1:n Джулии - это истинный вектор столбца, который всегда просто использует два целых числа для определения себя. Единственный раз, когда он действительно сохранит все свои элементы в памяти, это если вы попросите об этом (например, с помощью collect). Тем не менее, почти во всех случаях вы можете использовать его как реальный вектор без сохранения результатов;он очень эффективно генерирует свои элементы на лету. Это может выглядеть немного странно, поскольку оно просто печатается как 1:n, но на самом деле это массив. Вы можете даже сделать линейную алгебру с этим:

julia> r = 1:4
1:4

julia> r[3]
3

julia> A = rand(0:2, 3, 4)
3×4 Array{Int64,2}:
 0  1  2  2
 1  1  1  2
 1  0  2  1

julia> A * r
3-element Array{Int64,1}:
 16
 14
 11
3 голосов
/ 07 октября 2019

Я думаю, что искал

collect(1:n)
...