Re: Extracting indices of variable
- To: MathGroup at yoda.physics.unc.edu
- Subject: Re: Extracting indices of variable
- From: Robby Villegas <Villegas at knox.bitnet>
- Date: Wednesday, Nov 6, 1991
Vital Aelion asks:
> I am trying to find a Mathematica function which returns the index
> of an indexed variable.
>
> For example, f[ a[1] ] = 1
If a variable has only one index, then the function f could be "First":
First[ a[1] ] --> 1
Another way to extract the index, which is really an element of the
expression a[1], is to use Part (implicitly, with the "[[ ]]" special-input
form):
a[1] [[1]] --> 1
More generally, if a variable has several indices, you can produce the
list of its indices using the function Level:
Level[ a[i1, i2, ..., in], {1} ] --> {i1, i2, ..., in}
By default, Level extracts all elements of the given expression which are
at the specified levels, and puts them into a _list_, as above. If you
want some function applied to the n-tuple of indices, then Level allows you
to indicate this in an optional third argument:
Level[ a[i1, i2, ..., in], {1}, T ] --> T[i1, i2, ..., in]
So to define the convenient function 'f' that you suggested, you could
make the assignment
f[var_] := Level[var, {1}]
if you want the ordered n-tuple as a list, and you could define
f[var_] := Level[var, {1}, T]
if you want to repeatedly apply a single function T to indices of some
variables.
Robby Villegas
Knox College
E: Villegas at Knox.Bitnet