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.
% 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] }