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

# lreplace(n)

Replace elements in a list with new elements

## NAME

lreplace - Replace elements in a list with new elements

## SYNOPSIS

**lreplace** *list first last* ?*element element ...*?

## DESCRIPTION

**lreplace** returns a new list formed by replacing one or more elements of *list* with the *element* arguments. *first* and *last* are index values specifying the first and last elements of the range to replace. 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. 0 refers to the first element of the list, and **end** refers to the last element of the list. If *list* is empty, then *first* and *last* are ignored.

If *first* is less than zero, it is considered to refer to before the first element of the list.  For non-empty lists, the element indicated by *first* must exist or *first* must indicate before the start of the list.

If *last* is less than *first*, then any specified elements will be inserted into the list at the point specified by *first* with no elements being deleted.

The *element* arguments specify zero or more new arguments to be added to the list in place of those that were deleted. Each *element* argument will become a separate element of the list.  If no *element* arguments are specified, then the elements between *first* and *last* are simply deleted.  If *list* is empty, any *element* arguments are added to the end of the list.

## EXAMPLES

Replacing an element of a list with another: % **lreplace** {a b c d e} 1 1 foo a foo c d e

Replacing two elements of a list with three: % **lreplace** {a b c d e} 1 2 three more elements a three more elements d e

Deleting the last element from a list in a variable: % set var {a b c d e} a b c d e % set var \[**lreplace** $var end end\] a b c d

A procedure to delete a given element from a list: proc lremove {listVariable value} {\
     upvar 1 $listVariable var\
     set idx \[lsearch -exact $var $value\]\
     set var \[**lreplace** $var $idx $idx\] }

## 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), [lrange(n)](/lrange/n.md), [lsort(n)](/lsort/n.md), [string(n)](/string/n.md)

## KEYWORDS

element, list, replace
