TCL学习笔记之 列表命令
来源:互联网 发布:淘宝企业店铺装修教程 编辑:程序博客网 时间:2024/06/05 11:23
tcl使用列表来处理各种集合,列表允许你把任意数量的值集合在一起,把集合作为一个实体传递,列表是元素的有序集合,各个元素可以有任何的字符串。
最简单法的列表就是包含由任意个空格、制表符、换行符分割开的任意多个元素的字符串 例如:Joe anne mary jim 就是一个有4个元素的列表。一个列表中可以有任意多个元素,每一个元素可以是任意的字符串。1、lindex命令,用来从一个列表中取得元素 格式:lindex list ?index ...? 命令: lindex {Joe anne mary jim} 1 结果: anne lindex至少要有两个参数,即一个列表 和一个索引值,注意:对所有列表命令,索引0都对应列表的第一个元素,索引1对应第二个元素;索引end对应列表中的最后一个元素,如果索引指向的位置超出了列表,lindex会返回空字符串。2、llength命令,用来返回列表中元素的个数 格式:llength list 例如:llength {a b c d} =>4 大括号常用于在列表中的嵌套,如下: lindex {a b {c d e} f} 2 =>c d e 在操作嵌套列表时,lindex命令允许你指定一个或多个索引值,可以是分别独立的参数,也可以是一个列表,通过多个索引值可以从子列表中取得元素,例如: set elements {{a b} {c {d e f}} g} lindex $elements 1 1 2 =>f lindex $elements {0 0} =>a3、创建列表,Tcl里可以用list concat或 lrepeat 这三个命令来创建列表 3.1 list命令,把它的参数加入列表,即每个参数作为列表的一个独立元素,例如: list {a b c} {d e} {f {g h j}} =>{a b c} {d e} {f {g h j}} 3.2 concat命令,把参数列表中的所有元素串接为一个大的列表。如果某个输入列表的某个元素是嵌套的列表,这个元素会保持嵌套的列表。 concat {a b c} {d e} {f {g h j}} =>a b c d e f {g h j} 3.3 lrepeat命令,重复一个元素集合来创建列表,集合中各个元素作为单独参数给出,而第一个参数是指定重复的次数。例如: lrepeat 3 a b c =>a b c a b c a b c4、修改列表命令:lrange linset lreplace lset lappend 4.1 lrange命令,返回列表中某范围内的命令,该命令需要获取的参数包括一个列表和两个索引值,返回的列表是这两个索引值对应的元素之间的所有元素组成的新列表(当然也包括这两个索引值对应的元素)。 set x {a b {c d e}} =>a b {c d e} lrange $x 1 2 =>b {c d e} lrange $x 1 2 =>a b {c d e} 4.2 linset 命令,把一个或多个元素插入已经存在的列表,从而形成新的列表,linsert 需要获取三个或更多参数,第一个参数是列表,第二个参数是列表中的第一元素所对应的索引值,第三个以及其它参数是将要插入这个列表的新元素。linsert的返回值是一个列表。 set x {a b {c d e}} =>a b {c d e} linsert $x 2 x y z =>a b x y z {c d e} linsert $x 0 x y z =>x y z a b {c d e} 4.3 lreplace 命令,用来从列表中删除命令,且可以在它们的位置添加新的元素。它需要三个或更多参数,第一个参数是列表,第二个参数和第三个参数给出了要删除的那部分元素的开头元素和结尾元素分别对应的索引值,如果只给定了三个参数,那么就是从原列表中删除指定的那部分元素得到新的列表 lreplace {a b {c d e} e} 3 3 =>a b {c d e} 如果lreplace指定了更多的参数,如下面的例子,那这些参数就会插入到被删除的元素的位置 lreplace {a b {c d e} e} 3 3 {x y} z q =>a b {c d e} {x y} z q 4.4 lset 命令,是一种快速简练地修改元素值的方法,它获取变量名,列表中已经存在的一个元素对应的索引或一系列索引从而指向某个子列表的元素,以及赋给这个元素的新值。lset命令只能用来修改已经存在的列表,不能用来创建列表。 set person {{jane doe} female 30} =>{jane doe} female 30 lset person 2 25 =>{jane doe} female 25 lset person 0 0 mary =>{mary doe} female 25 4.5 lappend命令,用来把新的元素添加存放在一个变量中的列表里,它需要获取一个存放列表的变量名作为参数,以及任意多个其它参数,这些参数作为元素添加到第一个参数指明的列表中,lappend会返回该变量列表的新值。 set x {a b {c d} e} =>a b {c d} e lappend x x XX {YY ZZ} =>a b {c d} e x XX {YY ZZ} puts $x =>a b {c d} e x XX {YY ZZ}5 lassign 命令,把列表中的值分发到一个或多个变量中,它的第一个参数是一个列表,后面是参数的变量名。lassign把列表中的元素依次分发到这些变量中,如果变量名比列表中的元素多,多余的变量会被设置为空字符串,如果列表中的元素比变量个数多,则会返回一个由未分发的元素组成的列表。 lassign {a b c} x y z puts "$x $y $z" =>a b c lassign {d e} x y z puts "<$x> <$y> <$z>" =><d> <e> <> puts "$x $y $z" =>d e lassign {d e f g h} x y =>f g h puts "$x $y " =>d e
阅读全文
0 0
- TCL学习笔记之 列表命令
- Tcl学习之--列表|字典
- TCL学习之info命令
- TCL/TK 学习笔记 之 用C定义自己的TCL命令
- TCL学习之文件命令(1)
- TCL学习之文件命令(2)
- TCL命令学习
- tcl/tk学习笔记:数学表达式与 expr 命令
- tcl/tk学习笔记:字符串(二)string命令集
- Tcl学习笔记
- TCL脚本学习笔记
- Tcl&NS2学习笔记
- Tcl&NS2学习笔记
- redis学习笔记三之基础命令—列表
- Tcl学习之--表达式
- Tcl学习之--字符串
- TCL学习之数组
- tcl/tk safe - 3 - 命令列表
- 找到几个在线查看函数图像的网站
- 最小的k个数
- BZOJ 3991 寻宝游戏 (dfs序 RMQ set维护动态链的并集)
- uvalive 2966 求一个二分图 所有的完美匹配
- 多分支语句中的跳楼现象
- TCL学习笔记之 列表命令
- JAVA jvm和 Android dvm的区别
- 深度揭秘原型(深浅克隆)模式!
- 018 连续函数的运算及初等函数的连续性;第一类间断点、第二类间断点
- HNU OJ题库 1007H生理周期
- POJ 1961 Period
- 洛谷P1456 (HDU 1512)Monkey King
- E
- zynq学习笔记二:编译U-Boot(zybo)