---
name: "lrange"
section: "n"
platform: "macos"
package: "tcl"
version: "152"
release: "macOS 26.5"
platforms: ["linux", "macos"]
url: "https://new.carta.tech/lrange/n"
---

# lrange(n)

Return one or more adjacent elements from a list

## NAME

lrange - Return one or more adjacent elements from a list

## SYNOPSIS

**lrange** *list first last*

## DESCRIPTION

*List* must be a valid Tcl list.  This command will return a new list consisting of elements *first* through *last*, inclusive. The index values *first* and *last* are interpreted the same as index values for the command **string index**, supporting simple index arithmetic and indices relative to the end of the list. If *first* is less than zero, it is treated as if it were zero. If *last* is greater than or equal to the number of elements in the list, then it is treated as if it were **end**. If *first* is greater than *last* then an empty string is returned. Note: does not always produce the same result as (although it often does for simple fields that are not enclosed in braces); it does, however, produce exactly the same results as

## EXAMPLES

Selecting the first two elements: % **lrange** {a b c d e} 0 1 a b

Selecting the last three elements: % **lrange** {a b c d e} end-2 end c d e

Selecting everything except the first and last element: % **lrange** {a b c d e} 1 end-1 b c d

Selecting a single element with **lrange** is not the same as doing so with **lindex**: % set var {some {elements to} select} some {elements to} select % lindex $var 1 elements to % **lrange** $var 1 1 {elements to}

## SEE ALSO

[list(n)](/list/n.md), [lappend(n)](/lappend/n.md), [lindex(n)](/lindex/n.md), [linsert(n)](/linsert/n.md), [llength(n)](/llength/n.md), [lsearch(n)](/lsearch/n.md),  [lset(n)](/lset/n.md), [lreplace(n)](/lreplace/n.md), [lsort(n)](/lsort/n.md), [string(n)](/string/n.md)

## KEYWORDS

element, list, range, sublist
