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
返回一個列表,新列表為原列表的反序形式。
