1. 列表命令集
列表相关命令
命令 | 说明 |
list arg1 arg2 ... | 创建一个列表 |
lindex list index | 返回列表 list 中的第 index 个元素( element)值 |
llength list | 计算列表 list 元素个数 |
lrange list index1 index2 | 返回指定范围内(从 index1 到 index2)的元素 |
lappend list arg1 arg2 ... | 将新元素追加到原来列表 list 后组成新的列表 |
linsert list index arg1 arg2 ... | 将新元素插入到 list 中位于 index 元素之前的位置上 |
lreplace list index1 index2 arg1 arg2 ... | 替换指定范围的元素 |
lsearch ?mode? list value | 根据匹配模式 mode,查找 list 中与 value 匹配的元素位置索引。 mode 一般为-exact、 -glob 和- regexp.默认为-glob。找不到返回-1。 |
lsort ?switches? list | 根据 开关选项对列表进行排序 |
concat list1 list2 ... | 连接多个列表内容成一个列表 |
join list joinChars | 以 joinChars 为分隔符将列表中的元素合并在一起 |
split string splitChars | 以 splitChars 中的字符作为分隔符将字符串分解为列表元素。 |
foreach var list {proc body} | 遍历列表各项,逐次将各元素值存入 var 中并执行proc body。相当于一个循环控制语句。 |
2. list 命令
list 命令用来创建列表。一个列表可以包含子列表,即列表可以嵌套。
使用 list 命令创建列表示例:
-
set l1 [list Sun Mon Tues]
-
=> Sun Mon Tues #列表l1中含有三个元素
-
-
set l2 [list $l1 Wed]
-
=> {Sun Mon Tues} Wed #列表l2中含有两个元素。第一个元素用花括号括起来
-
-
set str1 "Sun Mon Wed"
-
=> Sun Mon Tues
-
-
set l2 [list $str1 Wed]
-
=> {Sun Mon Tues} Wed #和上面的命令相同,列表是特殊的字符串
-
-
set l1 [list "Sun Mon Tues" "Wed"]
-
=> {Sun Mon Tues} Wed #当元素是一个字符时,就被花括号括起来了
-
-
set b 10
-
set l3 [list {a $b c} d]
-
=> {a $b c} d
-
-
set l3 [list "a $b c" d]
-
=> {a 10 c} d
-
3. concat 命令
concat 命令以空格为分隔符将多个列表拼装在一起形成新的列表。它和双引号的作用比较相似。
list 命令和 concat 命令都可以完成列表合并功能。 list 和 lappend 命令保留每个列表的结构,将每个列表作为一个整体生成新列表的元素来完成。而 concat 命令则要先把各个列表的最外层列表结构去掉,将其中的所有元素取出来作为新列表的元素来完成合并,即新列表的每个元素也是合并前列表的元素。
-
set x {1 2} #花括号创建一个列表
-
=> 12
-
-
set y "$x 3" #$x被替换后,作为列表结构的花括号被去掉
-
=> 1 2 3
-
-
set y "$x {3}"
-
=> 1 2 {3}
-
-
set y [concat $x 3] #结构同“”的作用一样
-
=> 1 2 3
-
-
set y [concat $x {3}]
-
=> 1 2 3
-
-
set y [list $x 3]
-
=> {1 2} 3
-
-
set y [list $x {3}]
-
=> {1 2} 3
-
-
set y [lappend x 3]
-
=> {1 2} 3
-
4. lappend 命令
lappend 命令用来将新元素追加到列表末尾。
lappend 命令简单例子:
-
lappend new 1 2 #lappend命令也可以用来创建一个列表
-
=> 1 2
-
-
lappend new {3 4} "5" {6} 7 #单个元素的双引号和花括号被剥离了
-
=> 1 2 {3 4} 5 6 7
-
-
set new
-
=> 1 2 {3 4} 5 6 7
-
5. llength 命令
llength 命令可以获得一个列表内元素的个数。
llength 命令的一个简单例子:
-
set l1 "1 2 3 4 5"
-
=> 1 2 3 4 5 # 定义了一个字符串
-
-
set num [llength $l1] #这里l1被看成列表了
-
=> 5
-
列表是用空格搁开的多个元素组成的字符串,而通过 list 相关命令得到了特殊解释。既然 list是字符串,那么所有适用于字符串的操作命令也应该适用于列表。
6. lindex 命令
lindex 命令返回列表中指定位置的特定元素。列表索引从 0 开始记数!
lindex 命令的一个简单例子:
-
set x {1 4 5}
-
=> 1 4 5
-
-
lindex $x 1
-
=> 4
-
-
lindex $x end
-
=> 5
-
-
lindex $x end-1
-
=> 4
-
-
lindex $x first
-
=> bad index "first" : must be interer or end
-
7. lrange 命令
lrange 命令返回一个指定区段的列表元素,可以以 end 或者 end-n 作为索引(n 为正整数)。
-
lrange {1 2 3 {4 5} 6} 2 end
-
=> 3 {4 5 } 6
-
8. linsert 和 lreplace 命令
linsert 命令用来将元素插入到一个列表的由索引指定的位置。如果索引为 0 或者更小,则元素就会被添加到最前面。如果索引值大于或者等于列表长度,则元素被追加到列表尾部。其他情况元素被添加到指定位置之前。
lreplace 命令将一个指定区段的列表元素替换为新元素。如果没有指定新元素,则这个区域的元素就会被从列表中删除。
-
set x {1 2}
-
=> 1 2
-
-
set new [linsert $x 0 he she]
-
=> he she 1 2
-
-
set new [linsert $x end he she]
-
=> 1 2 he she
-
-
set new [linsert $x 1 he she]
-
=> 1 he she 2
-
-
puts $x
-
=> 1 2
-
-
puts $new
-
=> 1 he she 2
-
-
set y [lreplace $ new 1 2 B C]
-
=> 1 B C 2
-
-
set y [lreplace $ new 0 0]
-
=> he she 2
-
-
puts $ new
-
=> 1 he she 2
-
-
set y [lreplace $new 1 2]
-
=> 1 2
-
标签:set,元素,list,列表,命令,Tcl,new,操作 From: https://www.cnblogs.com/love-9/p/18133062