The commands for adding and deleting list members are:
concat ?arg1
arg2 ... argn?args into a single
list. It also eliminates leading and trailing spaces in the args
and adds a single separator space between args. The args to concat may be
either individual elements, or lists. If an arg is already a list, the contents of that list is
concatenated with the other args.lappend listName ?arg1 arg2 ...
argn?args to the list listName treating each arg as a list element.linsert listName index arg1 ?arg2 ... argn?index th element of listName. Each element argument will become a
separate element of the new list. If index is less than or equal to
zero, then the new elements are inserted at the beginning of the
list. If index has the value end , or if
it is greater than or equal to the number of elements in the list,
then the new elements are appended to the list.lreplace listName first last ?arg1 ... argn?listName replaced by the args. If first is less than
or equal to 0, lreplace starts replacing from the first element of
the list. If first is greater than the end
of the list, or the word end, then lreplace behaves like
lappend. If there are fewer args than the
number of positions between first and
last, then the positions for which there
are no args are deleted.lset varName index newValuelset command can be used to
set elements of a list directly, instead of using lreplace.Lists in Tcl are the right data structure to use when you have
an arbitrary number of things, and you'd like to access them
according to their order in the list. In C, you would use an array.
In Tcl, arrays are associated arrays - hash tables, as you'll see
in the coming sections. If you want to have a collection of things,
and refer to the Nth thing (give me the 10th element in this group
of numbers), or go through them in order via foreach.
Take a look at the example code, and pay special attention to the way that sets of characters are grouped into single list elements.
set b [list a b {c d e} {f {g h}}]
puts "Treated as a list: $b\n"
set b [split "a b {c d e} {f {g h}}"]
puts "Transformed by split: $b\n"
set a [concat a b {c d e} {f {g h}}]
puts "Concated: $a\n"
lappend a {ij K lm} ;# Note: {ij K lm} is a single element
puts "After lappending: $a\n"
set b [linsert $a 3 "1 2 3"] ;# "1 2 3" is a single element
puts "After linsert at position 3: $b\n"
set b [lreplace $b 3 5 "AA" "BB"]
puts "After lreplacing 3 positions with 2 values at position 3: $b\n"