2016-07-07 7 views
-1

l möchte ein Array mit dieser StrukturJulia: Erstellen eines Arrays for-Schleife

k [1] = 1

k [2] = 2

k [3] = 3 erstellen

k [4] = 4

l es auf diese Weise versucht, aber es funktioniert nicht

n= 10 

for i in 1:n 
k[i]= i 
end 

irgendwelche Vorschläge?

+0

Sie oft nicht wirklich ein Array benötigen (das belegt Speicher) und eine Reihe stattdessen verwenden kann, beispielsweise 'k = -5: 5'. Dann kannst du 'k [3]' machen und '2' zurückbekommen, was das dritte Element der Reihe ist. –

Antwort

3

Sie havent das Array initialisiert, so k Aufruf von [1] oder k [2] oder k [n] wird nicht einen Fehler zurück

Sie sollten entweder:

n= 10 
k = Array(Int64, n) #or Float64 or Any instead of Int64 
for i in 1:n 
    k[i]= i 
end 

oder Sie könnten

n= 10 
k = [] 
for i in 1:n 
    push!(k,i) 
end 

schlage ich die erstere würde die andere Methode mor Geeignet, wenn Sie vorher die Größe des Arrays nicht bestimmen können

+1

Ich mag die zweite Methode, auch wenn ich die Größe kenne. Sie sollten das Array jedoch zunächst mit dem richtigen Argumenttyp definieren, z. 'k = Int []' in diesem Beispiel. –

4

Der einfachste Weg, um die spezifische Array, das Sie erhalten möchten, ist dies:

k = collect(1:10) 

Wenn Sie ein Array in einer Schleife definieren wollen, dann müssen Sie zunächst das Array vorzubelegen, z.B. Verwendung k = zeros(10) und dann die Werte angeben:

n = 10 
k = zeros(n) 
for i = 1:n 
    k[i] = i 
end 
-4

Woher wissen Sie, dass es nicht funktioniert? Versuchen k Bewertung:

n= 10 

for i in 1:n 
k[i]= i 
end 

k 

10-element Array{Int64,1}: 1 2 3 4 5 6 7 8 9 10 

Eine prägnante Weise das Gleiche zu tun:

collect(1:10) 
+2

In 0.4.6 wird dieses Snippet einen UndefVarError werfen, und ich vermute das auch in anderen Versionen. Die grundlegende Annahme ist, dass das Array in der Frage nicht initialisiert wird und der Autor gerade Matlab-Verhalten testet, wo dies funktioniert. – RedPointyJackson

+0

Danke für die Erklärung. Peinlicher Fehler. Ich habe den Code in einem Jupyter-Notizbuch ausgeführt - wo 'k' tatsächlich in einer anderen Zelle definiert wurde. –