**More list commands - lsearch, lsort, lrange** !!!!!! '''[Tcl Tutorial Lesson 15%|%Previous lesson%|%]''' | '''[Tcl Tutorial Index%|%Index%|%]''' | '''[Tcl Tutorial Lesson 16a%|%Next lesson%|%]''' !!!!!! Lists can be searched with the `lsearch` command, sorted with the `lsort` command, and a range of list entries can be extracted with the `lrange` command. `lsearch ?options? list pattern`: Searches `list` for an entry that matches `pattern`, and returns the index for the first match, or a -1 if there is no match. By default, `lsearch` uses "glob" patterns for matching. See the section on globbing. `lsort ?options? list`: Sorts `list` and returns a new list in the sorted order. By default, it sorts the list into alphabetic order. Note that this command returns the sorted list as a result, instead of sorting the list in place. If you have a list in a variable, the way to sort it is like so: `set lst [lsort $lst]` `lrange list first last`: Returns a list composed of the `first` through `last` entries in the list. If `first` is less than or equal to 0, it is treated as the first list element. If `last` is `end` or a value greater than the number of elements in the list, it is treated as the end. If `first` is greater than `last` then an empty list is returned. While the options are not discussed here, they make these commands very powerful. ---- ***Example*** ====== set list [list {Washington 1789} {Adams 1797} {Jefferson 1801} \ {Madison 1809} {Monroe 1817} {Adams 1825} ] set x [lsearch $list Washington*] set y [lsearch $list Madison*] incr x incr y -1 ;# Set range to be not-inclusive set subsetlist [lrange $list $x $y] puts "The following presidents served between Washington and Madison" foreach item $subsetlist { puts "Starting in [lindex $item 1]: President [lindex $item 0] " } set x [lsearch $list Madison*] set srtlist [lsort $list] set y [lsearch $srtlist Madison*] puts "\n$x Presidents came before Madison chronologically" puts "$y Presidents came before Madison alphabetically" ====== <> Resulting output ======none The following presidents served between Washington and Madison Starting in 1797: President Adams Starting in 1801: President Jefferson 3 Presidents came before Madison chronologically 3 Presidents came before Madison alphabetically ====== <> !!!!!! '''[Tcl Tutorial Lesson 15%|%Previous lesson%|%]''' | '''[Tcl Tutorial Index%|%Index%|%]''' | '''[Tcl Tutorial Lesson 16a%|%Next lesson%|%]''' !!!!!!