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相关推荐

  1. (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 结 ...

  2. python tcl 控件_在Python中解析TCL列表

    我需要在双括号上拆分以空格分隔的TCL列表-例如-- OUTPUT = """{{172.25.50.10:01:01-Ethernet 172.25.50.10:01: ...

  3. (67)TCL脚本命令【incr(一个参数)】

    (67)TCL脚本命令[incr(一个参数)] 1 目录 1.1 TCL简介 1.2 TCL的起源与发展 1.3 TCL语言与库介绍 1.4 TCL运行环境 1.5 TCL脚本命令[incr(一个参数 ...

  4. (59)TCL脚本命令【全局变量】

    (59)TCL脚本命令[全局变量] 1 目录 1.1 TCL简介 1.2 TCL的起源与发展 1.3 TCL语言与库介绍 1.4 TCL运行环境 1.5 TCL脚本命令[全局变量] 1.6 结束语 2 ...

  5. (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 结 ...

  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 结 ...

  7. (66)TCL脚本命令【incr(两个参数)】

    (66)TCL脚本命令[incr(两个参数)] 1 目录 1.1 TCL简介 1.2 TCL的起源与发展 1.3 TCL语言与库介绍 1.4 TCL运行环境 1.5 TCL脚本命令[incr(两个参数 ...

  8. (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简介 ...

  9. (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 ...

最新文章

  1. js 获取当前时间 随记
  2. CUDA8.0+VS2015+Win10开发环境搭建教程
  3. 安卓用户又少了一项自由,Android 11不再支持更改默认相机程序
  4. 计算机网络基础 — 网络设备 — 网桥(Bridge)
  5. Servlet和JSP规范及版本对应关系
  6. 2015年第六届蓝桥杯 - 省赛 - C/C++大学B组 - H.移动距离
  7. Djago模型层(基础)
  8. 今天微信小程序发现wx.request不好使了,调试报错: 小程序要求的 TLS 版本必须大于等于 1.2...
  9. Docker学习文档之三 其他相关-参考
  10. k8s核心技术-Service概述_Service的三种类型_ClusterIP只能内部访问_NodePort可以外网访问_LoadBalancer公有云---K8S_Google工作笔记0032
  11. IoT方案|机智云智慧烟感解决方案
  12. yuv420转rgba
  13. C++中的LPVOID类型
  14. idea修改主题后,重新设置字体大小
  15. 慎用!网传一公司用微软雅黑和盗版PS损失近3000万
  16. Javascript 实现一个分钟秒钟倒计时器
  17. 【前端】手把手教你实现类似某bao的放大镜功能
  18. 王兴内部讲话:为什么中国To B企业都活得这么惨
  19. Linux内核中喂狗,m3352linux内核中看门狗喂狗和应用层喂狗方法
  20. STM32入门开发--LED模块实现跑马灯

热门文章

  1. s23赛季服务器维护到什么时候,王者荣耀S22赛季什么时候结束 S23赛季开始时间...
  2. 小白学前端——关于html,css,js分号使用问题
  3. PythonChallenge题解
  4. 面试总是失败的原因你了解多少?
  5. CVPR2021论文速览--LaPred: Lane-Aware Prediction of Multi-Modal Future Trajectories of Dynamic Agents
  6. UnicodeDecodeError: 'gbk' codec can't decode byte 0x8e in position 19024: illegal multibyte sequence
  7. mysql8.0.11 安装失败_mysql8.0.11安装遇到问题及解决方法。
  8. SSD固态硬盘闪存技术详解
  9. wsus服务器不显示客户端,WSUS无法发现客户端
  10. 电脑如何压缩jpg图片的大小?怎么把jpg图片kb变小?