---
name: "lindex"
section: "3tcl"
platform: "linux"
package: "tcl8.6-doc"
version: "8.6.16+dfsg-1"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/lindex"
---

# lindex(3tcl)

Retrieve an element from a list

```

```

## NAME

lindex - Retrieve an element from a list

## SYNOPSIS

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

```

```

## 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

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

[list(3tcl)](/list/3tcl.md), [lappend(3tcl)](/lappend/3tcl.md), [linsert(3tcl)](/linsert/3tcl.md), [llength(3tcl)](/llength/3tcl.md), [lsearch(3tcl)](/lsearch/3tcl.md), [lset(3tcl)](/lset/3tcl.md), [lsort(3tcl)](/lsort/3tcl.md), [lrange(3tcl)](/lrange/3tcl.md), [lreplace(3tcl)](/lreplace/3tcl.md), [string(3tcl)](/string/3tcl.md)

## KEYWORDS

element, index, list
