tcl list
Tcl list 命令的详细总结表,涵盖常用子命令、功能描述、语法示例及关键说明:
list 子命令速查表
子命令 功能描述 语法示例 返回值/说明
list 创建一个列表(自动处理空格和特殊字符) list a b {c d} “e f” a b {c d} {e f}(生成包含4个元素的列表)
llength 获取列表长度 llength {a b {c d}} 3(第三个元素是子列表 {c d})
lindex 获取列表中指定索引位置的元素(索引从0开始) lindex {a b c} 1 b(索引超出范围时返回空字符串)
lrange 获取列表中指定索引范围的子列表 lrange {a b c d} 1 2 b c(包含起始和结束索引)
lappend 向列表末尾追加元素 set lst {a b}
lappend lst c d a b c d(直接修改原变量 lst)
linsert 在指定索引前插入元素 linsert {a b d} 2 c a b c d(索引2前插入 c)
lreplace 替换列表中指定索引范围的元素 lreplace {a b c d} 1 2 x y a x y d(替换索引1到2的元素为 x y)
lset 修改列表中指定索引位置的元素(支持嵌套子列表) lset lst 1 “new” 直接修改变量 lst 的索引1为 new
lsearch 搜索列表中匹配条件的元素 lsearch {a b c b} “b”
lsearch -all {a b c b} “b” 1(首次匹配的位置)1 3(-all 返回所有匹配位置)
lsort 对列表排序(支持多种排序选项) lsort -ascii {3 1 2}
lsort -unique {a b a c} 1 2 3(默认升序)a b c(-unique 去重)
concat 合并多个列表(扁平化) concat {a b} {c {d e}} a b c d e(子列表 {d e} 被展开)
join 将列表元素连接为字符串(可指定分隔符) join {a b {c d}} “:” a🅱️{c d}(默认分隔符为空格)
split 将字符串分割为列表(按分隔符或正则表达式) split “a,b,c” “,” a b c(默认按空格分割)
lrepeat 生成重复元素的列表 lrepeat 3 “x” x x x
lreverse 反转列表元素顺序 lreverse {a b c} c b a
关键说明
列表索引规则:
索引从 0 开始,支持负数(如 -1 表示最后一个元素)。
lrange 包含起始和结束索引的元素。
列表与字符串的互转:
使用 join 将列表转为字符串(保留子列表结构),split 将字符串转为列表。
示例:
set lst {a “b c”} ;# 列表包含2个元素:a 和 “b c”
set str [join $lst “;”] ;# 转为字符串:“a;b c”
嵌套子列表处理:
concat 会展开所有子列表,而 list 和 lappend 会保留子列表结构。
示例:
concat {a {b c}} d ;# 返回 a b c d
list {a {b c}} d ;# 返回 {a {b c}} d
lset 的嵌套修改:
支持多级索引修改嵌套子列表:
set lst {a {b c} d}
lset lst 1 0 “x” ;# 修改子列表的索引0,结果为 {a {x c} d}
lsearch 的搜索选项:
-exact(精确匹配)、-glob(通配符)、-regexp(正则表达式)、-inline(返回匹配值)等。
示例:
lsearch -regexp {cat dog bat} “d.*” ;# 返回1(匹配"dog")
lsort 的排序选项:
-ascii(默认)、-dictionary(字典序,忽略大小写)、-integer(数值排序)、-decreasing(降序)等。
示例:
lsort -integer -decreasing {5 10 3 8} ;# 返回10 8 5 3
— END —