Making Definitions for Indexed Objects

In many kinds of calculations, you need to set up "arrays" that contain sequences of expressions, each specified by a certain index. One way to implement arrays in the Wolfram Language is by using lists. You can define a list, say a={x,y,z,}, then access its elements using a[[i]], or modify them using a[[i]]=value. This approach has a drawback, however, in that it requires you to fill in all the elements when you first create the list.

Often, it is more convenient to set up arrays in which you can fill in only those elements that you need at a particular time. You can do this by making definitions for expressions such as a[i].

This defines a value for a[1]:
Click for copyable input
This defines a value for a[2]:
Click for copyable input
This shows all the values you have defined for expressions associated with a so far:
Click for copyable input
You can define a value for a[5], even though you have not yet given values to a[3] and a[4]:
Click for copyable input
This generates a list of the values of the a[i]:
Click for copyable input

You can think of the expression a[i] as being like an "indexed" or "subscripted" variable.

a[i]=valueadd or overwrite a value
a[i]access a value
a[i]=.remove a value
?ashow all defined values
Clear[a]clear all defined values
Table[a[i],{i,1,n}] or Array[a,n]convert to an explicit List

Manipulating indexed variables.

When you have an expression of the form a[i], there is no requirement that the "index" i be a number. In fact, the Wolfram Language allows the index to be any expression whatsoever. By using indices that are symbols, you can for example build up simple databases in the Wolfram Language.

This defines the "object" area with "index" square to have value 1:
Click for copyable input
This adds another result to the area "database":
Click for copyable input
Here are the entries in the area database so far:
Click for copyable input
You can use these definitions wherever you want. You have not yet assigned a value for area[pentagon]:
Click for copyable input