Tcl列表命令之lmap、lrange、lrepeat、lreverse
lmap
lmap varname list body
lmap varlist1 list1 ?varlist2 list2 ...varlistN listN? body
lmap是Tcl8.6新增的命令,遍历一个或多个列表中的所有元素并收集结果。在最简单的情况下,只有一个循环变量varname,和一个列表list,list中的值会依次分配给变量varname,body是一个Tcl脚本。lmap像使用lindex命令一样来提取元素分配给varname,然后调用Tcl解释器来执行body。如果主体的执行正常完成,则body的结果追加到累加器列表中,lmap最后返回累加器列表。如果body中最后一个命令返回值为空,则lmap的返回结果为所有值均为空值的列表。由此更一般的情况是,有多个列表list1、list2...listN,每个列表的值会分配给对应的循环变量varlist1、varlist1...varlistN。迭代次数为所有列表的最大长度。如果列表没有足够的值分配给循环变量,则会将空值分配给循环变量。break和continue语句可以在body内部调用,与for和foreach命令中的效果相同。这种情况下,body不能正常完成,结果不会追加到累加器列表中。
set list1 {1 2 3 4 5}
set list2 {a b c d e f}
set list3 {A B C}
set map1 [lmap v1 $list1 v2 $list2 v3 $list3 {list $v1 $v2,$v3}]
puts $map1
set map2 [lmap v1 $list1 v2 $list2 v3 $list3 {expr {$v1!=""?[list $v1 $v2,$v3]:[continue]}}]
puts $map2
lrange
lrange list first last
从列表中返回一个或多个相邻元素。list必须是一个有效的Tcl列表。返回一个包含list中索引从first到last的新的列表。fisrt和last的解析与string index命令相同,支持简单的索引计算以及相对于列表末尾的索引计算。first与last的不同值会导致不同的行为,如下表:
first | last | 行为 |
小于0 | 小于0 | 返回空值。 |
小于0 | 大于等于0 | 从0到last索引处的元素。 |
大于0 | 小于first | 返回空值。 |
大于0 | 大于等于first | 返回从first到last索引处的元素。 |
大于等于列表元素数量 | 返回空值。 |
set list1 {a b c d e}
lrange $list1 -1 -2
lrange $list1 -1 3
lrange $list1 4 3
lrange $list1 1 3
lrange $list1 5 3
lrange $list1 end-2 end
lrepeat
lrepeat number element1 ?element2...elementN ?
通过重复元素构建列表,lrepeat命令通过重复number次元素序列element1 element2...elementN,创建一个长度为number*element数量的列表。 number必须是整数,element可以是任何Tcl值。number为1时与与list命令等价。
lrepeat 3 a b c
lrepeat 3 [ lrepeat 2 a b] c
lreverse
lreverse list
反转列表的顺序,返回一个新的与输入列表list顺序相反的列表,不改变输入列表。
set list1 {a d c b {g e} f}
lreverse $list1
Tcl列表命令之lmap、lrange、lrepeat、lreverse相关推荐
- (86)TCL脚本命令【lrange】
(86)TCL脚本命令[lrange] 1 目录 1.1 TCL简介 1.2 TCL的起源与发展 1.3 TCL语言与库介绍 1.4 TCL运行环境 1.5 TCL脚本命令[lrange] 1.6 结 ...
- python tcl 控件_在Python中解析TCL列表
我需要在双括号上拆分以空格分隔的TCL列表-例如-- OUTPUT = """{{172.25.50.10:01:01-Ethernet 172.25.50.10:01: ...
- (67)TCL脚本命令【incr(一个参数)】
(67)TCL脚本命令[incr(一个参数)] 1 目录 1.1 TCL简介 1.2 TCL的起源与发展 1.3 TCL语言与库介绍 1.4 TCL运行环境 1.5 TCL脚本命令[incr(一个参数 ...
- (59)TCL脚本命令【全局变量】
(59)TCL脚本命令[全局变量] 1 目录 1.1 TCL简介 1.2 TCL的起源与发展 1.3 TCL语言与库介绍 1.4 TCL运行环境 1.5 TCL脚本命令[全局变量] 1.6 结束语 2 ...
- (62)TCL脚本命令【format】
(62)TCL脚本命令[format] 1 目录 1.1 TCL简介 1.2 TCL的起源与发展 1.3 TCL语言与库介绍 1.4 TCL运行环境 1.5 TCL脚本命令[format] 1.6 结 ...
- (81)TCL脚本命令【lindex】
(81)TCL脚本命令[lindex] 1 目录 1.1 TCL简介 1.2 TCL的起源与发展 1.3 TCL语言与库介绍 1.4 TCL运行环境 1.5 TCL脚本命令[lindex] 1.6 结 ...
- (66)TCL脚本命令【incr(两个参数)】
(66)TCL脚本命令[incr(两个参数)] 1 目录 1.1 TCL简介 1.2 TCL的起源与发展 1.3 TCL语言与库介绍 1.4 TCL运行环境 1.5 TCL脚本命令[incr(两个参数 ...
- (80)TCL脚本命令【string trimleft】
1 目录 1.1 TCL简介 1.2 TCL的起源与发展 1.3 TCL语言与库介绍 1.4 TCL运行环境 1.5 TCL脚本命令[string trimleft] 1.6 结束语 2 TCL简介 ...
- (51)TCL脚本命令【foreach】
(51)TCL脚本命令[foreach] 1 目录 1.1 TCL简介 1.2 TCL的起源与发展 1.3 TCL语言与库介绍 1.4 TCL运行环境 1.5 TCL脚本命令[foreach] 1.6 ...
最新文章
- js 获取当前时间 随记
- CUDA8.0+VS2015+Win10开发环境搭建教程
- 安卓用户又少了一项自由,Android 11不再支持更改默认相机程序
- 计算机网络基础 — 网络设备 — 网桥(Bridge)
- Servlet和JSP规范及版本对应关系
- 2015年第六届蓝桥杯 - 省赛 - C/C++大学B组 - H.移动距离
- Djago模型层(基础)
- 今天微信小程序发现wx.request不好使了,调试报错: 小程序要求的 TLS 版本必须大于等于 1.2...
- Docker学习文档之三 其他相关-参考
- k8s核心技术-Service概述_Service的三种类型_ClusterIP只能内部访问_NodePort可以外网访问_LoadBalancer公有云---K8S_Google工作笔记0032
- IoT方案|机智云智慧烟感解决方案
- yuv420转rgba
- C++中的LPVOID类型
- idea修改主题后,重新设置字体大小
- 慎用!网传一公司用微软雅黑和盗版PS损失近3000万
- Javascript 实现一个分钟秒钟倒计时器
- 【前端】手把手教你实现类似某bao的放大镜功能
- 王兴内部讲话:为什么中国To B企业都活得这么惨
- Linux内核中喂狗,m3352linux内核中看门狗喂狗和应用层喂狗方法
- STM32入门开发--LED模块实现跑马灯
热门文章
- s23赛季服务器维护到什么时候,王者荣耀S22赛季什么时候结束 S23赛季开始时间...
- 小白学前端——关于html,css,js分号使用问题
- PythonChallenge题解
- 面试总是失败的原因你了解多少?
- CVPR2021论文速览--LaPred: Lane-Aware Prediction of Multi-Modal Future Trajectories of Dynamic Agents
- UnicodeDecodeError: 'gbk' codec can't decode byte 0x8e in position 19024: illegal multibyte sequence
- mysql8.0.11 安装失败_mysql8.0.11安装遇到问题及解决方法。
- SSD固态硬盘闪存技术详解
- wsus服务器不显示客户端,WSUS无法发现客户端
- 电脑如何压缩jpg图片的大小?怎么把jpg图片kb变小?