TCL语言笔记:TCL中的列表操作
一、介绍
列表则是具有特殊解释的字符串。Tcl 中的列表操作和其它 Tcl 命令一样具有相同的结构。列表可应用在诸如 foreach 这样的以列表为变元的循环命令中,也应于构建 eval 命令的延迟命令字符串。
二、TCL列表相关命令
|
命令 |
说明 |
|
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。相当于一个循环控制语句。 |
二、相关命令
1.list 命令
list 命令用来创建列表。一个列表可以包含子列表,即列表可以嵌套。
set l1 [list Sun Mon Tues]
结果=>Sun Mon Tues set l2 [list $l1 Wed] ;#列表 l1 含有三个元素
结果=> {Sun Mon Tues} Wed set str1 "Sun Mon Tues"
结果=>Sun Mon Tues set l2 [list $str1 Wed] ;#列表 l2 中含有两个元素。第一个元素用花括号括起来。
结果=>{Sun Mon Tues} Wed ;#和上面的命令结果相同:“列表是特殊的字符串”。
2.concat 命令
concat 命令以空格为分隔符将多个列表拼装在一起形成新的列表。它和双引号的作用比较相似。
set x {1 2}
结果=> 1 2
set y "$x 3 " ; #$x 被替换后,作为列表结构的花括号被去掉,
结果=> 1 2 3 ; #元素被提出来和 3 一起作为新列表的元素
set y "$x {3}"
结果=> 1 2 {3}
set y [concat $x 3] ;#结果同上面的双引号
结果=> 1 2 3
set y [concat $x {3}]
结果=> 1 2 3
3.lindex 命令
lindex 命令返回列表中指定位置的特定元素。列表索引从 0 开始记数!
set x { 1 2 3 }
结果=> 1 2 3
puts [lindex $x 1]
=>2
4.llength 命令
llength 命令可以获得一个列表内元素的个数。
set length "1 2 3 4 5"
结果=>1 2 3 4 5 ;#定义了一个字符串
set num [llength $l1] ;#这里 l1 被看作列表了
=>5
5.lrange 命令
lrange 命令返回一个指定区段的列表元素,可以以 end 或者 end-n 作为索引(n 为正整数)。
lrange {1 2 3 {4 5} 6} 2 end
结果=> 3 {4 5} 6
6.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 ;# x 的值没有改变
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 ;#new 的内容并没有改变,这和 string replace 相同。
set y [lreplace $new 1 2]
结果=>1 2 ;#将第 1、2 个元素删除
7.lsearch 命令
lsearch 命令在给定列表中搜索与匹配字符串匹配的元素,成功就返回正确的元素索引,否则返回-1。lsearch 支持通配符格式,但可以使用-exact 选项将其屏蔽而进行精确匹配。
set l1 [list This is one list]
结果=> This is one list set index [lsearch $l1 l*]
结果=> 3 set index [lsearch -exact $l1 l*]
结果=>-1 set index [lsearch -exact $l1 list]
结果=>3
8.lsort 命令
lsort 命令实现对列表的排序。排序操作不影响原表,而是返回排序之后的新表。
set list "a Z z n100 n200 M p Hl hL m 1 20"
结果=>a Z z n100 n200 M p Hl hL m 1 20 lsort -ascii $list
结果=>1 20 Hl M Z a hL m n100 n200 p z lsort -dictionary $list
结果=>1 20 a Hl hL M m n100 n200 p Z z
9. join 与 split 命令
join 命令接收一个列表,并用指定的分隔符将列表元素整合成一个字符串
join {1 {2 3} {4 5 6}} :
结果=> 1:2 3:4 5 6
split 命令的作用与 join 的作用相反,它接收一个字符串,并根据给定的字符将其分割转换成
一个列表。
set str cm8/auto/tools/aries/ASAM/NE/SNMP/IMPL/ne_create_board.tcl
结果=>cm8/auto/tools/aries/ASAM/NE/SNMP/IMPL/ne_create_board.tcl
set s /
结果=>/ set l1 [split $str $s]
结果=> cm8 auto tools aries ASAM NE SNMP IMPL ne_create_board.tcl set l2 [split $str "/."] ;#可以指定多个分割符
结果=> cm8 auto tools aries ASAM NE SNMP IMPL ne_create_board tcl
10.foreach 控制结构
foreach 命令/控制结构会遍历整个列表,逐次取出列表的每个元素的值放到指定变量中,使用者可以在跟随的过程体中添加必要的处理过程。
set lst "1 2 3 4"
结果是=>1 2 3 4 foreach l1 $lst {
puts $l1
}
结果是=>
1
2
3
4
TCL语言笔记:TCL中的列表操作的更多相关文章
- TCL语言笔记:TCL基础语法
一.什么是TCL Tcl 全称是 Tool command Language.它是一个基于字符串的命令语言,基础结构和语法非常简单,易于学习和掌握. Tcl 语言是一个解释性语言,所谓解释性是指不象其 ...
- Python中的列表操作
Python的列表操作可谓是功能强大且方便(相对于Java)简单.常规的操作就不说了(这不是一个入门教程),介绍几个很有特点的例子 添加 # 追加到结尾(append) li = [1, 2, 3, ...
- 【Python】Python中的列表操作
Python的列表操作可谓是功能强大且方便(相对于Java)简单.常规的操作就不说了(这不是一个入门教程),介绍几个很有特点的例子 添加 # 追加到结尾(append) li = [1, 2, 3, ...
- python学习笔记(二)列表操作
列表及列表操作: 列表是最常用的数据类型之一,列表也叫数组,列表定义,使用[]即可:列表里面可以再套列表,一个里面套一个列表,叫二维数组:一个里面套一个列表,里面的列表再套一个列表,这个叫三位数组,套 ...
- JavaWeb学习笔记——jquery中的dom操作
jquery中的dom操作 废话不说:直接上例子: 1.添加节点-html页面 Append:向每个匹配的元素内部追加内容. <body> <ul id="city& ...
- TCL语言笔记:TCL中的数组
一.介绍 Tcl 中的数组和其他高级语言的数组有些不同:Tcl 数组元素的索引,或称键值,可以是任意的字符串,而且其本身没有所谓多维数组的概念.数组的存取速度要比列表有优势,数组在内部使用散列表来存储 ...
- TCL语言笔记:TCL中的数学函数
一.TCL数学函数列表 函数名 说明 举例 abs(arg) 取绝对值 set a –10 ; #a=-10 set a [expr abs($a)]; # a=10 acos(arg) 反余弦 s ...
- TCL语言笔记:TCL中的String命令
一.介绍 字符串是 Tcl 中的基本数据类型,所以有大量的字符串操作命令.一个比较重要的问题就是模式匹配,通过模式匹配将字符串与指定的模式(格式)相匹配来进行字符串的比较.搜索等操作. 二.strin ...
- TCL语言笔记:TCL中的控制结构命令
一.引言 控制结构允许程序根据不同的状态.条件和参数来选择不同的处理和执行路径,从而使代码具有更强的灵活性.健壮性和可读性. Tcl 提供了 if.if/else.if/elseif.foreach. ...
随机推荐
- emmet(Zen coding)帮助文档
葵花宝典终可成,半途而废万事空. 官方地址:http://docs.emmet.io/cheat-sheet/ 我导出了pdf版,需要的同学可以下载: 链接:http://pan.baidu.com/ ...
- jeecms子栏目或者文章页导航父栏目选中解决方法
jeecms在子栏目或者文章页导航父栏目选中,看例子 <div class="nav"> <ul> [@cms_channel_list ] <li ...
- 关于angularJS与jquery在使用上的一些感悟
最近做的项目中,有同时用到angularJS与jquery两种JS框架. 在使用过程中发现,angularJS的用法更像是面向对象的编程模式.它会要求你定义一个view model,然后所有的页面变化 ...
- 《零成本实现Web自动化测试--基于Selenium》 第四章 Selenium 命令
Selenium 命令,通常被称为Selenese,由一系列运行测试案例所需要的命令构成.按顺序排列这些命令就构成了测试脚本. 一. 验证颜面元素 1.Assertion或者Verification ...
- C# 链接Sql和Access数据库语句
1.sql数据库: 1.1.链接数据语句:server=localhost;database=Data; uid=sa;pwd=123; 或 Data Source=localhost;DataBas ...
- Sybase ASE报错:server Error: 8242, Severity: 16, State: 1
昨天上午,同事反映某系统在执行存储过程的过程中报错了,报错的信息异常如下: 05:00000:00009:2014/06/09 15:45:30.34 server Error: 8242, Seve ...
- css 动画效果
要搞就搞明白,一知半解时停止研究 损失最大 css3意义: CSS3 动画 通过 CSS3,我们能够创建动画,这可以在许多网页中取代动画图片.Flash 动画以及 JavaScript. 重点 ...
- 关于const
1.顶层const和底层const const修饰的对象本身是常量,则为顶层const,否则为底层const 如: const int a=10; //a是int常量,顶层const i ...
- C++中的仿函数,std::function和bind()的用法
1.仿函数:又叫std::function,是C++中的一个模板类 2.C语言中的函数指针: int add(int a,int b) { return a+b; } typedef int (*f ...
- 20145120 《Java程序设计》第4周学习总结
20145120 <Java程序设计>第4周学习总结 教材学习内容总结 -定义子类,加"extends+父类名"以继承父类. -子类只能继承一个父类 -编辑器会检查等号 ...