首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >去掉TCL中的元素

去掉TCL中的元素
EN

Stack Overflow用户
提问于 2018-01-30 03:22:16
回答 1查看 50关注 0票数 0

假设我创建了一个这样的数组:

代码语言:javascript
复制
for {set i 1} {$i <=4} {incr i} {
    lappend run "$i [expr $i+1]"
}

puts "$run"

{1 2} {2 3} {3 4} {4 5}

现在我想找出包含2的元素并去掉它们,这样我就剩下

代码语言:javascript
复制
run ={3 4} {4 5}

我怎么能做到呢?

EN

回答 1

Stack Overflow用户

发布于 2018-01-30 03:53:29

首先:在Tcl中,数组是一个关联结构。您在这里创建的是一个列表。

从列表中过滤出元素的常用方法是这样做(伪代码):

代码语言:javascript
复制
set result [lmap item $list {if <test-to-keep> {set item} else continue}]

代码语言:javascript
复制
set result {}
foreach item $list {if <test-to-keep> {lappend result $item}}

( lmap命令在Tcl8.6或更高版本中可用,但在Tcl8.5中有一个纯Tcl版本,您可以将其复制并粘贴到下面的链接中提到的程序中。)

对于此示例,您可以使用此解决方案:

代码语言:javascript
复制
set result [lmap item $run {if {2 ni $item} {set item} else continue}]

也就是说,查看每一项,如果其中没有出现2,则保留它。

ni操作符在Tcl8.5或更高版本中:如果你有一个旧的Tcl,你应该升级。

文档:continueforeachiflmap (for Tcl 8.5)lmapni (operator)set

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48508518

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档