Tcl - Lists

List is one of the basic data-type available in Tcl. It is used for representing an ordered collection of items. It can include different types of items in the same list. Further, a list can contain another list.
An important thing that needs to be noted is that these lists are represented as strings completely and processed to form individual items when required. So, avoid large lists and in such cases; use array.
The general syntax for list is given below −
set listName { item1 item2 item3 .. itemn }
# or
set listName [list item1 item2 item3]
# or 
set listName [split "items separated by a character" split_character]

Some examples are given below −
#!/usr/bin/tclsh

set colorList1 {red green blue}
set colorList2 [list red green blue]
set colorList3 [split "red_green_blue" _]
puts $colorList1
puts $colorList2
puts $colorList3
When the above code is executed, it produces the following result −
red green blue
red green blue
red green blue

The syntax for appending item to a list is given below −
append listName split_character value
# or
lappend listName value

Some examples are given below −
#!/usr/bin/tclsh

set var orange
append var " " "blue"
lappend var "red" 
lappend var "green" 
puts $var
When the above code is executed, it produces the following result −
orange blue red green

The syntax for length of list is given below −
llength listName

Example for length of list is given below −
#!/usr/bin/tclsh

set var {orange blue red green}
puts [llength $var] 
When the above code is executed, it produces the following result −
4

The syntax for selecting list item at specific index is given below −
lindex listname index

Example for list item at index is given below −
#!/usr/bin/tclsh

set var {orange blue red green}
puts [lindex $var  1]
When the above code is executed, it produces the following result −
blue

The syntax for inserting list items at specific index is given below.
linsert listname index value1 value2..valuen

Example for inserting list item at specific index is given below.
#!/usr/bin/tclsh

set var {orange blue red green}
set var [linsert  $var 3 black white]
puts $var
When the above code is executed, it produces the following result −
orange blue red black white green

The syntax for replacing list items at specific indices is given below −
lreplace listname firstindex lastindex value1 value2..valuen

Example for replacing list items at specific indices is given below.
#!/usr/bin/tclsh

set var {orange blue red green}
set var [lreplace $var 2 3 black white]
puts $var
When the above code is executed, it produces the following result −
orange blue black white

The syntax for setting list item at specific index is given below −
lset listname index value 

Example for setting list item at specific index is given below −
#!/usr/bin/tclsh

set var {orange blue red green}
lset var 0 black 
puts $var
When the above code is executed, it produces the following result −
black blue red green

The syntax for copying values to variables is given below −
lassign listname variable1 variable2.. variablen

Example for transforming list into variables is given below −
#!/usr/bin/tclsh

set var {orange blue red green}
lassign $var colour1 colour2
puts $colour1
puts $colour2
When the above code is executed, it produces the following result −
orange
blue

The syntax for sorting a list is given below −
lsort listname

An example for sorting a list is given below −
#!/usr/bin/tclsh

set var {orange blue red green}
set var [lsort $var]
puts $var
When the above code is executed, it produces the following result −
blue green orange red