list:列表-用来表示集合
TCL中list是由一组元素组成的有序集合,list可以嵌套定义,list的每个元素可以是任意字符串,也可以是list。
语法:list ?value value …?
这个命令生成一个list,元素就是所有的value。
concat:将多个list合成一个list
语法:concat list ?list list …?
concat命令把多个list合成一个list,每个list变成新list的一个元素。
example1:
上面的例子看不出list和concat命令的区别。它们的区别主要是:
1)list把后面的参数都当作列表的一个元素看待,形成的列表是所有的元素组成的。List可以嵌套,即一个列表元素可以是一个列表。
2)concat把后面的参数当作一个列表来看待,形成的列表为所有列表中的元素组成。
如果参数列表中有多个列表元素,就可以看出区别了。
example2:
concat是去掉了一层列表结构后,再组合所有的元素。
lrepeat: 使用重复的元素构建列表
语法:lrepeat number element1 ?element2 element3 …?
number: 重复的次数 element:重复的元素
对element元素进行了number次的list操作
example3:
llength: 返回一个列表的元素个数
语法:llength list
lindex:返回索引值对应的列表元素
语法:lindex list ?index…?
根据索引值,找出列表中索引为index的元素,如果没有index参数就返回整个列表,如果index对应的元素还是一个列表就返回对应子列表中的元素。
元素的下标从0开始算起。
1)下标是5,不存在下标是5的元素,无返回。
2)缺省index,返回整个列表。
3)下标是3,对应的元素是book。
4)下表是1,对应子列表{is a},输出子列表的所有元素。
5)返回列表中索引为1的列表中下标为1的元素。
lrange: 返回指定区间的列表元素
语法:lrange list first last
返回列表list一个区间的元素,区间由first和last指定。
lassign: 将列表元素赋值给变量
语法:lassign list varname ?varname?
lappend: 在原列表后面添加元素
语法:lappend varname ?value value value?
lappend命令接收一个变量名(列表名),将元素添加到原列表后面,原列表会被修改。
可以看到,列表mylist已经被修改了。在tcl中如果命令传入的是变量名一般结果都会修改变量的值,如果传入的是值不会修改变量本身。
lreplace: 列表元素替换
语法:lreplace list first last ?element element …?
将索引为first到last的元素替换为后面的元素。
lset: 列表元素设置
语法:lset varname ?index…? newvalue
lset和lappend一样接收一个变量名作为参数,也会修改变量的值,将列表中的指定索引元素修改为指定的新值,如果不指定索引项就把整个列表换成新值。
1)将mylist列表中的索引3设置为bad。
2)注意有空格时要加””或者{ }
3)缺省索引时,整个列表被改变。
linsert:在指定索引值的列表中插入新值
语法:linsert list index element ?element element …?
这个命令可以在列表的index所表示的索引位插入元素,产生一个新的列表。
lsort: 对列表内的元素按照一定的规则进行排序
语法:lsort ?options? list
1)按照ASCII码的顺序排序,是默认状态。
2)按照字典顺序排序。
3)按照浮点数排序,要求列表里面的元素都能够正确的转化为浮点数。
4)按照整数排序,要求列表里面的元素都能够正确转化为整数。
1)-increasing 按照升序排列
2)-decreasing 按照降序排列
3)-indices 返回排序后的元素在原列表中的索引
4)-nocase 忽略大小写
lreverse:反向列表
语法:lreverse list
返回一个列表,新列表为原列表的反序形式。
因篇幅问题不能全部显示,请点此查看更多更全内容