lindex(n) Tcl Built-In Commands lindex(n)

```

```

# [NAME](#NAME)

lindex - Retrieve an element from a list

# [SYNOPSIS](#SYNOPSIS)

**lindex list** ?*index ...*?

```

```

# [DESCRIPTION](#DESCRIPTION)

The **lindex** command accepts a parameter, *list*, which it treats as a Tcl list. It also accepts zero or more *indices* into the list. The indices may be presented either consecutively on the command line, or grouped in a Tcl list and presented as a single argument.

If no indices are presented, the command takes the form:

```
lindex list
```

or

```
lindex list {}
```

In this case, the return value of **lindex** is simply the value of the *list* parameter.

When presented with a single index, the **lindex** command treats *list* as a Tcl list and returns the *index*'th element from it (0 refers to the first element of the list). In extracting the element, **lindex** observes the same rules concerning braces and quotes and backslashes as the Tcl command interpreter; however, variable substitution and command substitution do not occur. If *index* is negative or greater than or equal to the number of elements in *value*, then an empty string is returned. The interpretation of each simple *index* value is the same as for the command **string index**, supporting simple index arithmetic and indices relative to the end of the list.

If additional *index* arguments are supplied, then each argument is used in turn to select an element from the previous indexing operation, allowing the script to select elements from sublists. The command,

```
lindex $a 1 2 3
```

or

```
lindex $a {1 2 3}
```

is synonymous with

```
lindex [lindex [lindex $a 1] 2] 3
```

# [EXAMPLES](#EXAMPLES)

Lists can be indexed into from either end:

```
lindex {a b c} 0


      → a
lindex {a b c} 2


      → c
lindex {a b c} end


      → c
lindex {a b c} end-1


      → b
```

Lists or sequences of indices allow selection into lists of lists:

```
lindex {a b c}


      → a b c
lindex {a b c} {}


      → a b c
lindex {{a b c} {d e f} {g h i}} 2 1


      → h
lindex {{a b c} {d e f} {g h i}} {2 1}


      → h
lindex {{{a b} {c d}} {{e f} {g h}}} 1 1 0


      → g
lindex {{{a b} {c d}} {{e f} {g h}}} {1 1 0}


      → g
```

List indices may also perform limited computation, adding or subtracting fixed amounts from other indices:

```
set idx 1
lindex {a b c d e f} $idx+2


      → d
set idx 3
lindex {a b c d e f} $idx+2


      → f
```

# [SEE ALSO](#SEE_ALSO)

[list(n)](/man/os/tcl/list.n), [lappend(n)](/man/os/tcl/lappend.n), [lassign(n)](/man/os/tcl/lassign.n), [ledit(n)](/man/os/tcl/ledit.n), [linsert(n)](/man/os/tcl/linsert.n), [llength(n)](/man/os/tcl/llength.n), [lmap(n)](/man/os/tcl/lmap.n), [lpop(n)](/man/os/tcl/lpop.n), [lrange(n)](/man/os/tcl/lrange.n), [lremove(n)](/man/os/tcl/lremove.n), [lrepeat(n)](/man/os/tcl/lrepeat.n), [lreplace(n)](/man/os/tcl/lreplace.n), [lreverse(n)](/man/os/tcl/lreverse.n), [lsearch(n)](/man/os/tcl/lsearch.n), [lseq(n)](/man/os/tcl/lseq.n), [lset(n)](/man/os/tcl/lset.n), [lsort(n)](/man/os/tcl/lsort.n), [string(n)](/man/os/tcl/string.n)

# [KEYWORDS](#KEYWORDS)

element, index, list

8.4 Tcl

---

Document: lindex(n) from tcl 9.1.0-r0 (Chainguard OS)
Source: https://downloads.sourceforge.net/project/tcl/Tcl/9.1.0/tcl9.1.0-src.tar.gz
