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命令: -->获取关联子列表(按顺序)
例一: 整齐打印一个字典中的内容;
输出结果:
Tcl学习之--列表|字典的更多相关文章
- 周末学习笔记——day02(带参装饰器,wraps修改文档注释,三元表达式,列表字典推导式,迭代器,生成器,枚举对象,递归)
一,复习 ''' 1.函数的参数:实参与形参 形参:定义函数()中出现的参数 实参:调用函数()中出现的参数 形参拿到实参的值,如果整体赋值(自己改变存放值的地址),实参不会改变,(可变类型)如果修改 ...
- Tcl学习之--语法|变量
[语法|变量] l 脚本.命令和单词 Tcl提供了大约100条命令.Tk提供了另外几十条,脚本包括一条或多条,通过换行符或分号分隔开. set a 12 set b 23 也能够写成一行: set a ...
- python入门学习:5.字典
python入门学习:5.字典 关键点:字典 5.1 使用字典5.2 遍历字典5.3 嵌套 5.1 使用字典 在python中字典是一系列键-值对.每个键都和一个值关联,你可以使用键来访问与之相关 ...
- Python 高效编程技巧实战(2-1)如何在列表,字典, 集合中根据条件筛选数据
Python 高效编程技巧实战(2-1)如何在列表,字典, 集合中根据条件筛选数据 学习目标 1.学会使用 filter 借助 Lambda 表达式过滤列表.集合.元组中的元素: 2.学会使用列表解析 ...
- Python学习02 列表 List
Python学习02 列表 List Python列表 List Python中的列表(List)用逗号分隔,方括号包围(comma-separated values (items) between ...
- python :列表 字典 集合 类 ----局部变量可以改全局变量
#列表 字典 集合 类 ----局部变量可以改全局变量,除了整数和字符串 names=["alex","jack","luck"] def ...
- TCL语言笔记:TCL中的列表操作
一.介绍 列表则是具有特殊解释的字符串.Tcl 中的列表操作和其它 Tcl 命令一样具有相同的结构.列表可应用在诸如 foreach 这样的以列表为变元的循环命令中,也应于构建 eval 命令的延迟命 ...
- redis学习-散列表常用命令(hash)
redis学习-散列表常用命令(hash) hset,hmset:给指定散列表插入一个或者多个键值对 hget,hmget:获取指定散列表一个或者多个键值对的值 hgetall:获取所欲哦键值以及 ...
- python基础一 -------如何在列表字典集合中根据条件筛选数据
如何在列表字典集合中根据条件筛选数据 一:列表 先随机生成一个列表,过滤掉负数 1,普通for循环迭代判断 2,filter()函数判断,filter(函数,list|tuple|string) fi ...
随机推荐
- Python---哈夫曼树---Huffman Tree
今天要讲的是天才哈夫曼的哈夫曼编码,这是树形数据结构的一个典型应用. !!!敲黑板!!!哈夫曼树的构建以及编码方式将是我们的学习重点. 老方式,代码+解释,手把手教你Python完成哈夫曼编码的全过程 ...
- css 给div 添加滚动条样式hover 效果
css .nui-scroll { margin-left: 100px; border: 1px solid #000; width: 200px; height: 100px; ...
- luogu P1462 通往奥格瑞玛的道路--spfa+二分答案
P1462 通往奥格瑞玛的道路 题目背景 在艾泽拉斯大陆上有一位名叫歪嘴哦的神奇术士,他是部落的中坚力量 有一天他醒来后发现自己居然到了联盟的主城暴风城 在被众多联盟的士兵攻击后,他决定逃回自己的家乡 ...
- (7) openssl dgst(生成和验证数字签名)
该伪命令是单向加密工具,用于生成文件的摘要信息 也可以进行数字签名,及验证数字签名. 首先要明白的是,数字签名的过程是计算出摘要信息,然后使用私钥对摘要信息进行加密得 ...
- Linux中vim编辑器常用命令
移动光标 Ctrl+f:屏幕向下移动一页,相当于[Page Down]按键Ctrl+b:屏幕向上移动一页,相当与[PageUp]按键 0或功能键[Home]:数字‘0’:移动到这一行的最前面的字符处$ ...
- xshell连接Linux(centos6.8)失败的解决方法
注意:本人使用的是Centos6.8版本. Centos7以上版本linux命令会又不一样的地方. 启动xshell终端进行连接服务器:使用命令:ssh + ip地址或是手动使用可视化操作窗口操作, ...
- python版 定时任务机制
定时任务的原理 服务器执行一个python脚本 这个脚本,循环执行配置的定时任务地址 Python请求地址, 该地址应该返回, 下次再来执行的秒数. 也就是任务的频率 比如任务希望每3秒执行一次, 那 ...
- python_字符串类型
1.在python中用单引号' ',双引号'' '',三引号''' ''' 标注字符串类型. >>> name = "Alex Li" #双引号 >> ...
- 【HIHOCODER 1038】 01背包
链接 问题描述 且说上一周的故事里,小Hi和小Ho费劲心思终于拿到了茫茫多的奖券!而现在,终于到了小Ho领取奖励的时刻了! 小Ho现在手上有M张奖券,而奖品区有N件奖品,分别标号为1到N,其中第i件奖 ...
- python和shell获取命令行参数的区别
一.命令行参数的取得对于一些功能性的脚本来说非常有用,不至于将功能写死在脚本中. shell的命令行参数直接用 $ 1,$2 等就可以直接获取 其中 $1 表示 第二个参数,即命令行的第一个参数,因为 ...