Tcl学习之--列表|字典
Tcl使用列表來處理各種集合,比方一個目錄中的全部文件,以及一個組件的全部選項。最簡單的列表就是包括由隨意個空格、制表符、換行符、分隔的隨意多個元素的字符串。比方:
JerryAlice Mandy David
l? lindex命令: -->?獲取元素
至少須要兩個參數,一個列表和一個索引值。返回取得的元素
假設列表中包括列表的話,訪問子列表中的元素就要多個參數
l? llength命令: -->?獲取長度
列表命令中能夠把一個含有空白符的元素括在括號里。還能夠使用反斜線來給出特殊字符,如括號等。
l? list命令: -->?增加列表
Tcl提供了三個把字符串聯合為列表的命令:list、concat 和lrepeat。每一個命令能夠接受無數個參數,返回一個列表,list總是會產生一個適當的列表結構。不管參數結果怎樣.
l? concat命令: -->?合并列表
concat須要它的參數有適當的列表結構,假設某個參數不是形式完整的列表,那么這個命令給出的結果也可能不具備完整的列表形式。
concat做的工作就是:把參數字符串的開頭和結尾的空白裁掉,然后把各個元素以空格隔開。串接起來形成一個大的列表。
Concat完畢的任務能夠用[]來完畢。看以下樣例:
l? lrepeat命令: -->?反復元素來創建列表
l? lrange命令: -->?取范圍
Note:既然是范圍,就必須提供開始和結尾兩個參數
l? linsert命令:-->插入元素
linsert須要至少三個參數:
第一個參數: 是一個列表
第二個參數: 第一個元素索引值
第三個參數: 要插入的元素
l? lreplace命令:-->?刪除元素
須要至少三個元素。
第一個參數: 是一個列表
第二個參數: 要刪部分元素的開頭
第三個參數: 要刪部分元素的結尾
假設僅僅給定了三個元素。則是刪除指定部位:
假設給定了很多其它元素。則是代替:
lreplace經常使用操作: 更新列表中某個元素
NOTE:lreplace并非直接改動變量的值,須要運行一次命令替換來運行它。然后把返回的結果賦給有列表的變量作為它的新值,創建新列表。
l??lset命令: -->更新元素
高速簡練地改動元素的值。
l? lappend命令:?-->加入元素
高效的加入元素的方法。獲取存放列表的變量名作為參數,以及隨意多個其它參數,返回該列表變量的新值。
lappend和append差別及聯系:
差別: 前者是基于列表的加入。后者是基于字符串的加入。前者能夠強制生成適當的列表結構。
聯系:1.由于都是涉及到尾部加入,兩者效率都挺高。與append相比,lappend效率更高。2. 原來的變量都會改變。3. 都是以原來的變量名為加入對象。
能夠用concat 和 list命令達到
l? lassign命令:-->取得元素
該命令是將列表中的值分發到一個或多個變量中.
1) 第一個參數為列表:
2) 第二個及N個參數為變量名.
a)? 假設變量名比列表中的元素個數多。多余的變量會被設置為空字符.
b)? 假設列表中的元素比變量的個數多。則會返回一個未分發的元素組成組成的列表。
該命令兩個比較實用的操作:
1. 模仿某些語言的shift,在Python中是pop, push
set argv [lassign $argvnextArg]
2. 利用foreach命令來將列表中的元素分發給獨立變量.
l? lsearch命令:-->?查找元素
該命令從列表中查找指定的元素,它獲得兩個參數。
第一個參數: 列表
第二個參數: 模式
搜索到返回指定的索引值,非負數。
未搜索到返回:-1
經常使用參數前標志:
-exec:進行嚴格匹配
-glob:指定匹配依照stringmatch命令的規則進行
-regexp:進行正則表達式匹配
-inline:指定返回元素。而非元素的索引
-not:對匹配的結果取反
-all:將全部匹配的元素組成一個列表返回
l? lsort命令:-->排序
排序命令,能夠在列表前加入選項來控制排序
-decreasing:最大數排在前面
-integer:列表中的元素被視為整數進行排序
-real:列表中的元素被視為實數來進行排序
-unique:返回的結果中。反復的僅僅出現一次
-index:? 同意指定子列表中元素的索引
-dictionary:指定不區分大寫和小寫的排序,而且元素中嵌入的數字作為非負整數處理
另外: 假設列表中包括了不能進行字詞排序或數學排序的數據。能夠使用-command命令選項定義自己的排序函數.
l? split和join命令:-->分隔、合并
split命令:將字符串分成幾部分。然后能夠對各個部分獨立進行處理并創建一個列表。它須要兩個參數:
第一個參數: 待分隔的字符串
第二個參數: 一個或多個分隔字符
多個字符分隔:
假設指定分隔字符是空字符串。會將字符串接成一個字符串,元素之間用指定的切割符隔開.
join命令 :是split命令的逆操作。把列表連成一個字符串。元素之間用指定的分隔符隔開。
?
l? 字典結構與dict get命令:
字典是依照鍵、值來創建及維護的。看上去像元素的列表,實則不然。Hash的方式存儲,按鍵查找值,其代碼復雜度O(1),不同于數組,字典能夠可靠的按一定順序來遍歷。或作為一個值傳給其它命令(NOTE:非全局數組須要用upvar或明白進行打包和解包).
類似于一個偶數的列表,1.3.5..為鍵,2.4.6..為值
Firstname JohnSecondname SmithTitle Mr
嵌套字典的定義及遍歷
l??dict create命令: -->創建字典
l? dict remove命令: -->?刪除鍵值
l? dict merge命令: -->?合并字典
l? dict set和dict unset命令: -->更改字典
l? dict size命令: -->元素個數
l? dict exists命令: -->?存在推斷
l? dict keys命令: -->?獲取keyword列表(按順序)
l? dict values命令: -->獲取關聯子列表(按順序)
?
例一: 整齊打印一個字典中的內容;
輸出結果:
轉載于:https://www.cnblogs.com/lytwajue/p/6888084.html
總結
以上是生活随笔為你收集整理的Tcl学习之--列表|字典的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: win10 多少钱啊?
- 下一篇: mongodb的几种启动方法