# How can I retrieve an element of an array created with Range? [duplicate]

I have the following Mathematica code where I create a linearly spaced array of numbers and try to retrieve the third element:

tN = 48;
linearmesh[a_, b_, n_Integer /; n > 1] := Range[a, b, (b - a)/(n - 1)]
a = linearmesh[0, 2*Pi, tN + 1] // N // Short
a[[3]]


This code results in the following output:

{0.,0.1309,0.261799,<<43>>,6.02139,6.15229,6.28319}
Part::partw: Part 3 of {0.,0.1309,0.261799,<<43>>,6.02139,6.15229,6.28319} does not exist.


I don't understand why this doesn't give me the third element of the array but instead gives me an error message?

• It is nice to link sources of the code: mathematica.stackexchange.com/q/32715/5478 – Kuba Apr 19 '17 at 7:34
• I've made it a duplicate of a closely related topic (which answer is the answer to your problem) to prevent it from being closed as a simple mistake. Let me know if you disagree. – Kuba Apr 19 '17 at 7:38

Look at Head[a]. It will be Short. It's a precedence issue between // and =.

Never do this: var = value // someForm because it will assign someForm[value] to var.

This is fine:

arr = longCalculation[]; // AbsoluteTiming


because the ; separates the assignment from AbsoluteTiming

Just remove the "Short" command, which generates a text string

    a = linearmesh[0, 2*Pi, tN + 1] // N

a//Length
49


If you really want the Short[ ] output then I use this pattern...

    (a = linearmesh[0, 2*Pi, tN + 1] // N) //Short