当前位置: 首页 > 编程日记 > 正文

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

相关文章:

JAVA代码实现下载单个文件,和下载打包文件

//下载单个文件调用方法 /** * response * imgPath 下载图片地址 * fileName 保存下载文件名称 * date 2015年4月14日 下午5:53:24 */ public static void download(HttpServletResponse response,String imgPath,String fileName){ OutputStrea…

php读取本地xlsx格式文件的数据并按json格式返回

微信小程序开发交流qq群 173683895 承接微信小程序开发。扫码加微信。 目的:php读取并操作本地xlsx格式的文件; 完整示例代码: 代码讲解:前端发起post网络请求,php接收一个name(姓名)的参数…

面向对象编程概念_如何向6岁的孩子解释面向对象的编程概念

面向对象编程概念by Alexander Petkov通过亚历山大佩特科夫(Alexander Petkov) Have you noticed how the same cliche questions always get asked at job interviews — over and over again?您是否注意到在求职面试中总是一遍又一遍地问同样的陈词滥调问题? I…

jQuery 属性

jQuery 属性 方法描述context在版本 1.10 中被废弃。包含被传递到 jQuery 的原始上下文jquery包含 jQuery 的版本号jQuery.fx.interval改变以毫秒计的动画运行速率jQuery.fx.off对所有动画进行全局禁用或启用jQuery.support包含表示不同浏览器特性或漏洞的属性集(主…

mongodb的几种启动方法

1 mongodb的几种启动方法 启动Mongodb服务有两种方式,前台启动或者Daemon方式启动,前者启动会需要保持当前Session不能被关闭,后者可以作为系统的fork进程执行,下文中的path是mongodb部署的实际地址。1. 最简单的启动方式&#xf…

php 修改数据库表的字段的值

微信小程序开发交流qq群 173683895 承接微信小程序开发。扫码加微信。 php 前端传递参数&#xff0c;遍历数据库表的字段后根据条件进行修改。 <?phpheader("Content-Type:text/html;charsetutf8"); header("Access-Control-Allow-Origin: *"); //解…

如何开始使用PostgreSQL

by Akul Tomar通过Akul Tomar 如何开始使用PostgreSQL (How to get started with PostgreSQL) PostgreSQL is an open source Relational Database Management System (RDBMS). In this article, I’ll provide an introduction to getting started with PostgreSQL. Here is …

Java中数组常见的几种排序方法!

数组的定义&#xff1a; int[] arr new int[5];int[] arr1 {1,2,3,4,5};long[] arr2 new long[6];String[] strs new String[5];Person[] ps new Person[5]; 数组的操作&#xff1a; int[] arr {45, 34, 53, 43};Arrays.sort(arr);System.out.println(Arrays.toString(ar…

oracle 如何预估将要创建的索引的大小

一.1 oracle 如何预估将要创建的索引的大小 oracle 提供了2种可以预估将要创建的索引大小的办法&#xff1a; ① 利用包 Dbms_space.create_index_cost 直接得到 ② 利用11g新特性 Note raised when explain plan for create index 下边分别举例说明。 一.2 环境说明 [ora…

删除对象的某个属性

微信小程序开发交流qq群 173683895 承接微信小程序开发。扫码加微信。 实现代码&#xff1a; var data {a:1,b:2,c:3}for(var item in data){if (item b) {delete data[item];} }console.log(data:, data) 打印结果&#xff1a; data: {a: 1, c: 3}

java 学到什么实习_我如何获得外展实习机会以及到目前为止所学到的知识

java 学到什么实习by Nguedia Adele由Nguedia Adele 我如何获得外展实习机会以及到目前为止所学到的知识 (How I got my Outreachy internship and what I’ve learned so far) I recently got accepted for an Outreachy internship, working with LibreHealth.我最近接受了与…

STM32F103C8开发板原理图和管脚图

转载于:https://www.cnblogs.com/libra13179/p/6894335.html

js实用数组方法

微信小程序开发交流qq群 173683895 承接微信小程序开发。扫码加微信。 判断是否为数组 1. Array.isArray([]) 2. var arr[1,2] arr instanceof Array -->true arr instanceof String -->false map ---- 返回数组得出的结果 const filtered [1, 2,…

BasicModal - 简单易用的现代 Web App 弹窗

BasicModal 是为现代 Web 应用程序打造的弹窗系统。它包括所有你需要显示的信息&#xff0c;问题或接收用户的输入。这里的弹窗还可以链接起来&#xff0c;所以你可以很容易地建立一个预定义顺序的安装帮助或显示对话框。无效输入可以使用包含突出显示和处理功能。 在线演示 …

javascript选择器_如何通过选择正确JavaScript选择器来避免沮丧

javascript选择器选择器如何影响代码的快速指南 (A quick guide on how selectors affect your code) While working on a project, I ran into an issue in my code. I was attempting to define multiple HTML elements into a collection and then change those elements ba…

Asp.net中GridView使用详解(引)【转】

Asp.net中GridView使用详解(引) GridView无代码分页排序 GridView选中&#xff0c;编辑&#xff0c;取消&#xff0c;删除 GridView正反双向排序 GridView和下拉菜单DropDownList结合 GridView和CheckBox结合 鼠标移到GridView某一行时改变该行的背景色方法一 鼠标移到GridView…

《任正非:我若贪生怕死,何来让你们英勇奋斗》

非常高兴尼泊尔代表处的进步&#xff0c;你们的一个历史项目概算亏损&#xff0c;从大前年亏损2.7亿美金&#xff0c;到前年亏损3000万美金&#xff0c;到去年盈利2140万美金。在喜马拉雅南麓一路爬坡&#xff0c;辛苦了。听说去年你们都涨了工资&#xff0c;我十分高兴。巴西代…

个人使用微信支付

微信小程序开发交流qq群 173683895 承接微信小程序开发。扫码加微信。 首先在PAYJS申请到商户号和密钥&#xff0c; 然后实现源码如下&#xff1a; <!DOCTYPE html> <html lang"zh"><head><meta charset"UTF-8"><title>…

构建node.js基础镜像_我如何使用Node.js构建工作抓取网络应用

构建node.js基础镜像by Oyetoke Tobi Emmanuel由Oyetoke Tobi Emmanuel 我如何使用Node.js构建工作抓取网络应用 (How I built a job scraping web app using Node.js) Scraping jobs from the web has now become easier thanks to Indreed.现在&#xff0c;借助Indreed&…

Robotium测试报告的生成方法(上)

7.1 使用junit-report生成报告 这个是参考网上的&#xff1a;http://www.xuebuyuan.com/2148574.html&#xff0c;经我个人验证是可行的方法&#xff0c;网上写的挺详细的&#xff0c;不过有些不太清楚明白的地方&#xff0c;鉴于网上说的有点迷茫&#xff0c;所以下面我再细化…

Python之向日志输出中添加上下文信息

除了传递给日志记录函数的参数&#xff08;如msg&#xff09;外&#xff0c;有时候我们还想在日志输出中包含一些额外的上下文信息。比如&#xff0c;在一个网络应用中&#xff0c;可能希望在日志中记录客户端的特定信息&#xff0c;如&#xff1a;远程客户端的IP地址和用户名。…

小程序点击图片自动播放视频,停止上一个视频播放

微信小程序开发交流qq群 173683895 承接微信小程序开发。扫码加微信。 通过列表的点击事件自动播放列表对应的视频&#xff0c;同时停止上一个视频的播放 源码&#xff1a; <view><view classvv wx:for{{vedio_data}} wx:key><view classblock stylemargin…

hitchhiker部署_Hitchhiker的React Router v4指南:无限远的递归路径!

hitchhiker部署Welcome to the third part of the Hitchhiker’s Guide to React Router v4. In this article we’re going to focus on recursive paths. If you’ve missed the first two parts, you can find part 1 here and part 2 here.欢迎阅读《 Hitchhiker React Rou…

smbpasswd 和 pdbedit 的区别

smbpasswd 和 pdbedit 的区别 以前我们在windows上共享文件的话&#xff0c;只需右击要共享的文件夹然后选择共享相关的选项设置即可。然而如何实现windows和linux的文件共享呢&#xff1f;这就涉及到了samba服务了&#xff0c;这个软件配置起来也不难&#xff0c;使用也非常简…

DB天气app冲刺二阶段第十一天(完结)

今天最后一天冲刺了&#xff0c;明天就不再冲刺了。。已经把所有的技术的问题还有设计的问题都弄好了吧应该说 至少目前来说是的。因为有的实现不了的或者需要耗费时间的已经果断舍弃了&#xff0c;然后需要完善的也都基本完善了。 现在还需要做的就是素材的收集整理。需要抽半…

如何超越console.log并充分利用浏览器的调试控制台

by Gilad Dayagi通过吉拉德达亚吉 The console object is a very useful feature of browsers that has been around for many years. It provides access to the browser’s debugging console.Most web developers know how to print messages to the console using console…

区域设置 ID (LCID) 表, 及获取方法

区域设置 ID (LCID) 表, 及获取方法 中国的区域设置 ID 是 2052, 如果经常打开微软软件的安装目录应该经常见到.获取很简单, 有现成的 API 函数: GetThreadLocale.beginShowMessage(IntToStr(GetThreadLocale)); //2052 end; 区域设置 ID (LCID) 表区域设置描述简写十六进制值十…

E201700525-hm

skeleton n. 骨骼; &#xff08;建筑物等的&#xff09; 骨架; 梗概; 骨瘦如柴的人&#xff08;或动物&#xff09;;adj. 骨骼的; 骨瘦如柴的; 概略的; 基本的; cloud n. 云; 云状物; invoke vt. 乞灵&#xff0c;祈求; 提出或授引…以支持或证明; 召鬼; 借助;render …

php不显示报错

微信小程序开发交流qq群 173683895 承接微信小程序开发。扫码加微信。 error_reporting(E_ALL & ~E_NOTICE);

致谢 开源开发者的贡献_对开源做出的贡献如何使我成为更好的开发人员,以及如何做到这一点...

致谢 开源开发者的贡献by Luciano Strika通过卢西亚诺斯特里卡(Luciano Strika) 对开源做出的贡献如何使我成为更好的开发人员&#xff0c;以及如何做到这一点 (How contributing to open source made me a better developer — and how you can do it, too) So you’ve been …