tcl tk參考 列表操作lsearch

2021-04-15 18:58:57 字數 3181 閱讀 8266

. .

lsearch - 在列表中尋找特定元素

lsearch?options? list pattern

這個命令尋找list中與pattern匹配的元素。如果匹配到了返回第一次找到這個元素的索引(除非指定了-all-inline),如果沒有匹配到返回-1。可選變元指出了列表的元素怎樣去匹配pattern,可選項如下:

匹配風格可選項

預設的匹配風格為-glob,如果給出了多個匹配風格,那麼最後給出的匹配風格有效。

-exact

pattern是字串並且必須嚴格匹配每乙個

list元素。

-glob

pattern是通配風格匹配每乙個列表元素,與string match命令類似。

-regexp

pattern被當作乙個正規表示式來匹配列表中的每乙個元素,與re_syntax命令類似。

-sorted

列表元素被排序,如果指定了這個可選項,lsearch將會使用更加有效的查詢演算法去查列表。如果沒有指定其它的可選項,

list將被排列成公升序並且包含ascii碼。這個可選項與-glob-regexp互斥,當指定了-all-not時與-exact非常象。

一般修飾可選項

這些可選項可以在任何一種匹配風格中給出。

-all

返回乙個列表,列表的元素為所有匹配到的索引,返回的索引按照數字順序排列,如果同時指定了-inline返回數值,數值的順序就是在列表中的順序。

-inline

返回匹配到的第乙個元素。如果-all也指定了,則返回乙個列表,列表的元素為所有匹配到的數值。

-not

與匹配相反,返回第乙個不匹配的數值的索引。

-startindex

從列表的

index個索引開始搜尋。

內容描述可選項

描述如何去解釋在列表中尋找到的元素,只有當-exact-sorted指定時才有效。如果給出了多個可選項,那麼最後給出的可選項有效。預設為-ascii。

-ascii

列表元素作為unicode字串來檢查。

-dictionary

列表元素在比較時使用字典關係(檢視lsort以獲取詳細描述),只有當-sorted可選項指定時才有有效。

-integer

列表中的元素被當作整數來處理。

-nocase

忽略大小寫。與-dictionary-integer-real搭配無效。

-real

列表中的元素被當作浮點數來處理。

列表排序可選項

這個可選項指定了列表如何排序,只有指定了-sorted時才有效。如果給出了多個可選項,那麼最後給出的可選項有效。

-decreasing

列表元素為降序排列,只有指定了-sorted時才有效。

-increasing

列表元素為公升序排列,只有指定了-sorted時才有效。

內嵌列表可選項

這些可選項被用來尋找子列表,可以與任何其它可選項一起使用。

-indexindexlist

這個可選項尋找內嵌的列表,

indexlist變元必須給出乙個索引列表(與lindexlset類似),

indexlist給出的索引列表在

list中必須存在對應的索引,否則會出錯。

-subindices

這個可選項只返回尋找到的子列表元素,必須和-index配合使用。

基本搜尋:

lsearchc
→ 2
lsearch-all  c
→ 2 5
過濾列表:

lsearch-inline  b*
→ b35
lsearch-inline -not  b*
→ a20
lsearch-all -inline -not  b*
→ a20 c47
lsearch-all -not  b*
→ 0 2
甚至可以做切除操作:

lsearch-all -inline -not -exact  a
→ b c d e f g
搜尋從半途開始:

lsearch-start 3  c
→ 5
搜尋子列表中的元素:

lsearch-index 1 -all -inline   } *bc*

tcl tk參考 列表操作list

list 建立乙個列表list?arg arg 這個命令返回乙個由所有的 arg組成的列表,如果不指定 arg則返回空。花括號和反斜槓也可以正確的加入到列表中,所以lindex命令可以釋放list命令的所有變元。eval命令可以去執行列表結果,arg1作為命令名稱,其它的 arg作為命令的變元。li...

tcl tk參考 列表操作lset

lset 修改列表中的乙個元素 lsetvarname index.newvalue lset命令接收乙個varname參量,varname是乙個列表變數。命令可以接收0個或多個index,多個index可 以連續排列,也可以以列表形式出現。最終接收乙個新的值作為varname的乙個元素。如果沒有i...

tcltk例項詳解 列表操作(二)

列表操作在指令碼中使用的頻率非常高,基本上每個指令碼都會涉及到其中的一些操作,在這裡對列表的命令進行例項解析,以加深對列表命令的理解,本文涉及的命令為llength lindex lrange lsearch和lassign。llengthlist 返回乙個列表的元素個數,非常簡單而又常用的命令。l...