Tcl列表

列表使用空白符将元素分割开来。可以使用花括号或者双引号将包含空白符的单词组成一个单一的列表元素。与其它语言中的列表数据结构不同的是,Tcl列表只是具有特殊解释的字符串。在每次存取列表时,必须对字符串表达式进行语法分析,因此在使用大列表时要小心。如果需要维护要频繁存取的大列表时,就要考虑改变代码利用数组加以替代。下表中简要叙述了与列表相关的tcl命令。

与列表相关的命令
列表命令 说明
list arg1 arg2 根据所有的变员创建出一个列表
lindex list i 返回list中的第i个元素。列表索引从0开始。end为最后一位索引。
llength list 返回list中的元素个数
lrange list i j 返回list中从第i个到第j个的元素
lappend listVar arg arg ... 将元素追加到listVar的值的后面
linsert list index arg arg ... 将元素插入到list中位于index的元素之前的位置。不修改现有列表
lreplace list i j arg arg ... 将list中从i到j的元素替换为args,返回一个新列表。不修改现有列表
lsearch ?mode? list value 根据mode(-exact、-glob或-regexp)返回list中与value匹配的元素索引。默认模式为-glob。如果没有就返回-1
lsort ?switches? list 根据开关选项对列表元素进行排序,开关选项为-ascii、-integer、-real、-dictionary、-increasing、-decreasing、-indexix、-command command,返回一个新列表
concat list list ... 将多个列表连接成一个新列表
join list joinString 以joinString为分隔符将列表中的元素合并在一起
split string splitChars 使用splitChars中的字符作为列表元素之间的分界,将字符串分解为列表元素。

1、list命令

根据变元构建列表,因此列表中的每一个元素都是变元。下面的程序中列举了使用list命令引用和手动引用的案例。list命令可以自动完成引用。但是在手动引用过程中,需要将{}反映出来,并将花括号的功能关闭。还需知$x中是否存在空格,以判断其是否需要括起来。另外,x的值如果随意改动,列表的结构就会改变,甚至会成为无效列表。

set x {1 2}
1 2
set y foo
foo
set l1 [list $x "a b" $y] #使用list命令引用
{1 2} {a b} foo
set l2 "\{$x\} {a b} $y"  #手动引用
{1 2} {a b} foo

2、lappend命令

用来将元素添加至列表末尾。

lappend new 1 2
1 2
lappend new 3 4 "5 6"
1 2 3 4 {5 6}

3、concat命令

将列表拼装在一起。并以空格空格分开变元。

set x {4 5 6}
set y {2 3}
set z {1}
concat $z $y $x
1 2 3 4 5 6

4、lsearch命令

返回列表中一个值的索引,如果值不存在就返回-1。

5、lsort命令

以多种方式对列表进行排序。lsort并不是对原表进行排序,而是返回一个新的列表。可以通过-ascii、-dictionary、-integer、-real选项来指定基本的排序类型,可以通过选项-increasing或decreasing指定排序方式,默认选项设置为-ascii -increasing。

6、join命令

接收一个列表值并使用指定的分隔列表元素的字符对其重新格式化。

7、split命令

接收一个字符串,并根据指定的字符将其分割转换成一个列表,同时它保证其结果具有恰当的列表语法。

发布了78 篇原创文章 · 获赞 7 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/hepiaopiao_wemedia/article/details/100678329
TCL
今日推荐