首页 > Tcl学习之--列表|字典

Tcl学习之--列表|字典

列表|字典

Tcl使用列表来处理各种集合,比方一个目录中的全部文件,以及一个组件的全部选项。最简单的列表就是包括由随意个空格、制表符、换行符、分隔的随意多个元素的字符串。比方:

JerryAlice Mandy David

lindex命令: --> 获取元素

至少须要两个參数,一个列表和一个索引值。返回取得的元素



假设列表中包括列表的话,訪问子列表中的元素就要多个參数



llength命令: --> 获取长度



列表命令中能够把一个含有空白符的元素括在括号里。还能够使用反斜线来给出特殊字符,如括号等。



list命令: --> 增加列表

Tcl提供了三个把字符串联合为列表的命令:list、concat 和lrepeat。每一个命令能够接受无数个參数,返回一个列表,list总是会产生一个适当的列表结构。不管參数结果怎样.



concat命令: --> 合并列表

concat须要它的參数有适当的列表结构,假设某个參数不是形式完整的列表,那么这个命令给出的结果也可能不具备完整的列表形式。

concat做的工作就是:把參数字符串的开头和结尾的空白裁掉,然后把各个元素以空格隔开。串接起来形成一个大的列表。

Concat完毕的任务能够用[]来完毕。看以下样例:



lrepeat命令: --> 反复元素来创建列表



lrange命令: --> 取范围



Note:既然是范围,就必须提供開始和结尾两个參数

linsert命令:-->插入元素

linsert须要至少三个參数:

第一个參数: 是一个列表

第二个參数: 第一个元素索引值

第三个參数: 要插入的元素



lreplace命令:--> 删除元素

须要至少三个元素。

第一个參数: 是一个列表

第二个參数: 要删部分元素的开头

第三个參数: 要删部分元素的结尾

假设仅仅给定了三个元素。则是删除指定部位:



假设给定了很多其它元素。则是代替:



lreplace经常使用操作: 更新列表中某个元素



NOTE:lreplace并非直接改动变量的值,须要运行一次命令替换来运行它。然后把返回的结果赋给有列表的变量作为它的新值,创建新列表。

l  lset命令: -->更新元素



高速简练地改动元素的值。

lappend命令: -->加入元素

高效的加入元素的方法。获取存放列表的变量名作为參数,以及随意多个其它參数,返回该列表变量的新值

lappend和append差别及联系:

差别: 前者是基于列表的加入。后者是基于字符串的加入。前者能够强制生成适当的列表结构。

联系:1.由于都是涉及到尾部加入,两者效率都挺高。与append相比,lappend效率更高。2. 原来的变量都会改变。3. 都是以原来的变量名为加入对象。

能够用concat 和 list命令达到

lassign命令:-->取得元素

该命令是将列表中的值分发到一个或多个变量中.

1) 第一个參数为列表:

2) 第二个及N个參数为变量名.

a)  假设变量名比列表中的元素个数多。多余的变量会被设置为空字符.

b)  假设列表中的元素比变量的个数多。则会返回一个未分发的元素组成组成的列表



该命令两个比較实用的操作:

1. 模仿某些语言的shift,在Python中是pop, push

set argv [lassign $argvnextArg]

2. 利用foreach命令来将列表中的元素分发给独立变量.



lsearch命令:--> 查找元素

该命令从列表中查找指定的元素,它获得两个參数。

第一个參数: 列表

第二个參数: 模式

搜索到返回指定的索引值,非负数。

未搜索到返回:-1

经常使用參数前标志:

-exec:进行严格匹配

-glob:指定匹配依照stringmatch命令的规则进行

-regexp:进行正則表達式匹配

-inline:指定返回元素。而非元素的索引

-not:对匹配的结果取反

-all:将全部匹配的元素组成一个列表返回



lsort命令:-->排序

排序命令,能够在列表前加入选项来控制排序

-decreasing:最大数排在前面

-integer:列表中的元素被视为整数进行排序

-real:列表中的元素被视为实数来进行排序

-unique:返回的结果中。反复的仅仅出现一次

-index:  同意指定子列表中元素的索引

-dictionary:指定不区分大写和小写的排序,而且元素中嵌入的数字作为非负整数处理

另外: 假设列表中包括了不能进行字词排序或数学排序的数据。能够使用-command命令选项定义自己的排序函数.

split和join命令:-->分隔、合并

split命令:将字符串分成几部分。然后能够对各个部分独立进行处理并创建一个列表。它须要两个參数:

第一个參数: 待分隔的字符串

第二个參数: 一个多个分隔字符

多个字符分隔:

假设指定分隔字符是空字符串。会将字符串接成一个字符串,元素之间用指定的切割符隔开.

join命令 :是split命令的逆操作。把列表连成一个字符串。元素之间用指定的分隔符隔开。

 

字典结构与dict get命令:

字典是依照键、值来创建及维护的。看上去像元素的列表,实则不然。Hash的方式存储,按键查找值,其代码复杂度O(1),不同于数组,字典能够可靠的按一定顺序来遍历。或作为一个值传给其它命令(NOTE:非全局数组须要用upvar或明白进行打包和解包).

类似于一个偶数的列表,1.3.5..为键,2.4.6..为值

Firstname JohnSecondname SmithTitle Mr

嵌套字典的定义及遍历



l  dict create命令: -->创建字典



dict remove命令: --> 删除键值



dict merge命令: --> 合并字典

dict set和dict unset命令: -->更改字典

dict size命令: -->元素个数

dict exists命令: --> 存在推断

dict keys命令: --> 获取keyword列表(按顺序)

dict values命令: -->获取关联子列表(按顺序)

 

例一: 整齐打印一个字典中的内容;

输出结果:



转载于:https://www.cnblogs.com/lytwajue/p/6888084.html

更多相关:

  • 来源:http://suo.im/5HPGNT在Python中有4种内建的数据结构:列表、元组、字典、集合。今天我们将会学习如何使用它们,以及它们如何使编程变得简单。一、列表list是处理一组有序项目的数据结构,即你可以在一个列表中存储一个 序列 的项目。假想你有一个购物列表,上面记载着你要买的东西,你就容易理解列表了。只不过在你...

  • python列表(数组)  列表(list)  就是 数组   - 列表是Python中的一个对象   - 对象(object)就是内存中专门用来存储数据的一块区域   - 之前我们学习的对象,像数值,它只能保存一个单一的数据   - 列表中可以保存多个有序的数据   - 列表是用来存储对象的对象   - 列表的使用:   ...

  • 节点列表由 getElementsByTagName() 方法和 childNodes 属性返回。 实例 下面的例子使用 XML 文件 books.xml。 函数 loadXMLDoc(),位于外部 JavaScript 中,用于加载 XML 文件。 从第一个 元素获取文本 本例使用 getElementsByT... </p> </div> </div> </li><li> <div class="arcTitle clearfix"> <h3><a href="//11gx.com/rpkg02sce7/" target="_blank">Windows DOS窗口查看历史执行过的命令的三种方式</a></h3> </div> <div class="clearfix"> <div class="arcDes"> <p>在DOS窗口执行了一些列命令完成某项工作后,如果要查看都执行了那些命令,该如何办呢?(前提:DOS窗口未关闭的情况下)     一、方法一:使用↑↓箭头上下翻看执行过的命令,此方式适宜执行命令较少的情况; 二、方法二:使用快捷键; F7快捷键查看所有执行过的命令 F3:调出上一条执行过的命令,调出后直接回车即可执行; F... </p> </div> </div> </li><li> <div class="arcTitle clearfix"> <h3><a href="//11gx.com/vtk7g0oyr6/" target="_blank">关于在linux下清屏的几种技巧</a></h3> </div> <div class="clearfix"> <div class="arcDes"> <p>在windows的DOS操作界面里面,清屏的命令是cls,那么在linux 里面的清屏命令是什么呢?下面笔者分享几种在linux下用过的清屏方法。 1、clear命令、这个命令将会刷新屏幕,本质上只是让终端显示页向后翻了一页,如果向上滚动屏幕还可以看到之前的操作信息。 2、Ctrl+l(小写的L)、这是一个清屏的快捷键,这个是笔者... </p> </div> </div> </li><li> <div class="arcTitle clearfix"> <h3><a href="//11gx.com/3gdran7mh6/" target="_blank">LINUX下用CTRL+R快速搜索HISTORY历史命令,快速索引到之前使用过的命令行语句</a></h3> </div> <div class="clearfix"> <div class="arcDes"> <p>LINUX下用CTRL+R快速搜索HISTORY历史命令,快速索引到之前使用过的命令行语句 前提是,搜索已经使用的命令,否则是查不出来结果的。 ctrl+r 用途:反向搜索执行过的命令。(reverse-i-search) 1、任何目录下按住ctrl + r 2、输入历史命令中的字符串 ,比如 输入shut 会检索... </p> </div> </div> </li><li> <div class="arcTitle clearfix"> <h3><a href="//11gx.com/oirz6qkdlw/" target="_blank">linux 入门-1</a></h3> </div> <div class="clearfix"> <div class="arcDes"> <p>刚开始接触linux,总有些简单的问题不知道怎么搞定,先将目前汇总的解决方法叫做"linux入门-1",后续在使用过程中逐步总结。   1. 连接 ADSL : sudo pon dsl-provider 断开 ADSL: sudo poff 查看 ADSL 状态: plog 2. dpkg 命令 dpkg 是 Debia... </p> </div> </div> </li><li> <div class="arcTitle clearfix"> <h3><a href="//11gx.com/eo9dv8gpln/" target="_blank">NVME CLI -- nvme 命令查看NVME设备内部状态</a></h3> </div> <div class="clearfix"> <div class="arcDes"> <p>文章目录NVME 和 AHCI 性能比较NVME-CLI nvme工具使用1. 安装2. 命令综述3. 基本命令演示4. NVME 固件设备升级... </p> </div> </div> </li><li> <div class="arcTitle clearfix"> <h3><a href="//11gx.com/f1ryjbu46l/" target="_blank">C++ Stack Queue priority_queue</a></h3> </div> <div class="clearfix"> <div class="arcDes"> <p>栈stack:stack 后入先出(LIFO) q.top()获取栈顶元素(并不删除)q.pop()删除栈顶元素q.push(x)向栈中加入元素q.empty()判断栈是否为空 队列queue:先入先出(FIFO)   q.front()获取队首元素(并不删除)q.pop()删除队首元素q.push(x)向队列中加入元素q.... </p> </div> </div> </li><li> <div class="arcTitle clearfix"> <h3><a href="//11gx.com/xq4n59uky8/" target="_blank">c++ resizereserve</a></h3> </div> <div class="clearfix"> <div class="arcDes"> <p>resize(),设置大小(size); reserve(),设置容量(capacity); size()是分配容器的内存大小,而capacity()只是设置容器容量大小,但并没有真正分配内存。 打个比方:正在建造的一辆公交车,车里面可以设置40个座椅(reserve(40);),这是它的容量,但并不是说它里面就有了40个座椅,只能说... </p> </div> </div> </li><li> <div class="arcTitle clearfix"> <h3><a href="//11gx.com/3vuaci57bd/" target="_blank">用v-for循环动态定位坐标显示元素,并遍历元素的left和top坐标位置(只需要用到元素的宽高、索引、每行显示数量)</a></h3> </div> <div class="clearfix"> <div class="arcDes"> <p>v-for="(index,$i) in total" :key="$i":style="{left:`${itemWidth*((index-1)%rowItemCount)}px`,top:`${itemHeight*(Math.ceil(index/rowItemCount)-1)}px`}" //total是显示总数量 //l... </p> </div> </div> </li><li> <div class="arcTitle clearfix"> <h3><a href="//11gx.com/bg73eu2fld/" target="_blank">几种经典的居中技巧(垂直和水平居中)</a></h3> </div> <div class="clearfix"> <div class="arcDes"> <p>  技巧一(推荐指数★★★★★) 采用top、right、bottom、left,可以不在乎父元素的宽度和高度,对GPU损耗低于技巧三,但是对浏览器内存的消耗高于技巧三 .子元素 {/*父元素需要position: relative|absolute;*/position: absolute;margin: auto;to... </p> </div> </div> </li><li> <div class="arcTitle clearfix"> <h3><a href="//11gx.com/5i6uten0yh/" target="_blank">leetcode-155 最小栈</a></h3> </div> <div class="clearfix"> <div class="arcDes"> <p>设计一个支持 push,pop,top 操作,并能在常数时间内检索到最小元素的栈。 push(x) – 将元素 x 推入栈中。pop() – 删除栈顶的元素。top() – 获取栈顶元素。getMin() – 检索栈中的最小元素。 示例: MinStack minStack = new MinStack(); minStack... </p> </div> </div> </li> </ul> </div> </div> </div> <!-- <div class="simle_box300"></div> --> </div> </section> <div class="footer-wrapper"> <div class="footer"> <p class="text-center"> ©2024 11GX.COM </p> </div> </div></body> </html>