2016-11-25 3 views
2

извините за глупый простой вопрос, новичок с Юлей:Julia массив пустых массивов

Я хотел бы инициализировать массив как это:

folds = [[], [], [], [], [], [], [], []], но не вручную.

В Python Я просто пишу

folds = [[]] * 8, но это не работает с Юлей.

Как это возможно с Юлией? Я несколько раз пробовал, но теперь успех. Можете ли вы также объяснить решение.

спасибо.

ответ

5

Один из способов будет список понимания (хотя это, конечно, не совсем так сжатая Python):

[[] for i=1:8] 
+0

отлично, спасибо – gugatr0n1c

+4

Обратите внимание, что это не то же самое, что версия python. 'folds [i] .append (x)' будет добавляться ко всем массивам в python, тогда как в Julia массивы будут независимыми. – tim

+0

@tim - очень полезный комментарий! –

4

Эквивалент folds = [[]] * 8 (!, Который, вероятно, не то, что вы хотите) в Юле

folds = fill([], 8) 

Смотрите результат

push!(folds[1], 1) 
8-element Array{Array{Any,1},1}: 
Any[1] 
Any[1] 
Any[1] 
Any[1] 
Any[1] 
Any[1] 
Any[1] 
Any[1] 

и

folds[1].append(1) 
# [[1], [1], [1], [1], [1], [1], [1], [1]] 

С другой стороны, понимание, как [[] for i = 1:8] будет создавать независимые массивы в Джулию и похожи на питона.

+0

это не работает с нажатием! push! (Folds [1], 1) будет нажимать 1 на каждый массив – isebarn

+1

Да, это то, что я показал в результате, и что будет для '[[]] * 8' в python. Это обычная игра на питоне. – tim

+0

@isebarn Я добавил предупреждение, чтобы сделать его более понятным. – tim