## With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

No credit card required

# Lists

In the `proc` command, the second argument was a list of variables.

`proc fib {ult pen n} {`

The parameter list is just a string containing the characters, "`u`“, "`l`“, "`t`“, " “, "`p`“, "`e`“, "`n`“, " “, and "`n`“. Intuitively, the string can also be thought of as a list of three elements: `ult`, `pen`, and `n`. The whitespace just serves to separate the elements.

Lists are very useful, and Tcl provides many commands to manipulate them. For example, `llength` returns the length of a list.[10]

```tclsh> `llength "a b c"`
3
tclsh> `llength ""`
0
tclsh> `llength [llength "a b c"]`
1```

In the next few sections, I will describe more commands to manipulate lists.

## Selecting Elements Of Lists

The `lindex` and `lrange` commands select elements from a list by their index. The `lindex` command selects a single element. The `lrange` command selects a set of elements. Elements are indexed starting from zero.[11]

```tclsh> `lindex "a b c d e" 0`
a
tclsh> `lindex "a b c d e" 2`
c
tclsh> `lrange "a b c d e" 0 2`
a b c
tclsh> `llength [lrange "a b c d e" 0 2]`
3```

You can step through the members of a list using an index and a `for` loop. Here is a loop to print out the elements of a list in reverse.

```for {set i [expr [llength \$list]−1]} {\$i>=0} {incr \$i −1} {
puts [lindex \$list \$index]
}```

Iterating from front to back is much more common than the reverse. In fact, it is so common, there is a command to do it called `foreach`. The first argument is a variable name. Upon each iteration of the loop, the variable is set to the next element in the list, provided as ...

## With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, interactive tutorials, and more.

No credit card required