1. 程式人生 > > Tcl -- list用法

Tcl -- list用法

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

返回一個列表,新列表為原列表的反序形式。