# 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:
 In:= Out= This defines a value for a:
 In:= Out= This shows all the values you have defined for expressions associated with a so far:
 In:=   You can define a value for a, even though you have not yet given values to a and a:
 In:= Out= This generates a list of the values of the a[i]:
 In:= Out= You can think of the expression a[i] as being like an "indexed" or "subscripted" variable.

 a[i]=value add or overwrite a value a[i] access a value a[i]=. remove a value ?a show 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:
 In:= Out= This adds another result to the area "database":
 In:= Out= Here are the entries in the area database so far:
 In:=   You can use these definitions wherever you want. You have not yet assigned a value for area[pentagon]:
 In:= Out= 