When presented with a single index, the lpop command addresses the index'th element in it, removes if from the list and returns the element.
If index is negative or greater or equal than the number of elements in $varName, then an error occurs.
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 address an element within a sublist designated by the previous indexing operation, allowing the script to remove elements in sublists. The command,
lpop a 1 2
gets and removes element 2 of sublist 1.
set x [list [list a b c] [list d e f] [list g h i]] → {a b c} {d e f} {g h i}
The indicated value becomes the new value of x (except in the last case, which is an error which leaves the value of x unchanged.)
lpop x 0 → {d e f} {g h i} lpop x 2 → {a b c} {d e f} lpop x end → {a b c} {d e f} lpop x end-1 → {a b c} {g h i} lpop x 2 1 → {a b c} {d e f} {g i} lpop x 2 3 j → list index out of range
In the following examples, the initial value of x is:
set x [list [list [list a b] [list c d]] \ [list [list e f] [list g h]]] → {{a b} {c d}} {{e f} {g h}}
The indicated value becomes the new value of x.
lpop x 1 1 0 → {{a b} {c d}} {{e f} h}