1、list命令:用来创建列表,列表可以镶嵌。
set l1 [list Sun Mon Tues]
puts $l1
set l2 [list $l1 Wed]
puts $l2
set str1 "Sun Mon Tues"
puts $str1
set l3 [list $str1 wed]
puts $l3
2、concat命令:以空格为分隔符将多个列表拼装形成新的列表
set x {1 2}
set y [concat $x 3]
1 2 3
3、lappend命令:用来将新元素追加到列表末尾,同时也可以用来创建一个列表。
lappend new 1 2
1 2
lappend new {3 4} "5" {6} 7
1 2 {3 4} 5 6 7 单个词的元素和双引号和花括号被剥离了
4、llength命令:可以获得一个列表内元素的个数。
set l1 "1 2 3 4 5"
set num [llength $l1]
5
5、lindex命令:返回列表中指定位置的特定元素。
set x {1 4 5}
lindex $x 1 #索引从第0个元素开始
4
lindex $x end-1
4
6、lrange命令:返回一个指定区段的列表元素。
lrange {1 2 3 {4 5} 6} 2 end
3 {4 5} 6
7、linsert和lreplace命令:linsert用来将元素插入到一个列表的由索引指定的位置。
lreplace命令将一个指定区段的列表元素替换为新元素。
set x {1 2}
set new [linsert $x 0 he she]
puts $new
set new1 [lreplace $x 1 1 b]
puts $new1
注意:替换并不会改变原来列表的内容,而是返回一个新的列表。
9、lsearch 命令:在给定列表中搜索与匹配字符串匹配的元素,成功就返回正确的索引(指的是位置),否则返回-1.
#proc ldel {list value} {
# set ix [lsearch -exact $list $value]
# for {}{$ix>=0}{}{
# set list [lreplace $list $ix $ix]
# set ix [lsearch -exact $list $value]
# }
# return list
#}
#set l1 [list 123 234 123 345 123 456]
#set val 123
#set l2 [ldel $l1 $val]
#puts $l2
10、lsort 命令:实现对列表的排序。排序不影响原表,返回新表。
lsort -ascii $list
排序的方式有多种,可以通过-ascii、-dictionary、-integer、-real,然后使用-increasing、decreasing指定排序方式。默认-ascii、-increasing。
11、join 与 split命令
join命令接受一个列表,并用指定的分隔符将列表元素整合成一个字符串。
split命令作用于join相反,接受一个字符串,并根据给定的字符将其分割转换成一个列表。
13、foreach命令控制结构遍历整个列表,逐次取出列表的每个元素的值放到指定变量中。
foreach elem $l1 {
puts "---$elem"
}
逐次取出l1元素,并在结构体中打印出来。