TCL从列表中删除元素

Nar*_*rek 20 element list tcl

如何删除TCL列表中的元素说:

  1. 其中索引= 4
  2. 有值="aa"

我已经谷歌搜索,还没有找到任何内置功能.

dry*_*dam 43

set mylist {a b c}
puts $mylist
a b c
Run Code Online (Sandbox Code Playgroud)

按索引删除

set mylist [lreplace $mylist 2 2]
puts $mylist 
a b
Run Code Online (Sandbox Code Playgroud)

按值删除

set idx [lsearch $mylist "b"]
set mylist [lreplace $mylist $idx $idx]
puts $mylist
a
Run Code Online (Sandbox Code Playgroud)

  • @Narek然后请更新你的问题,问你想要什么,b/c drysdam回答你的问题. (5认同)
  • 一件小事; 最后一项的结果不应该是'ac`,而不仅仅是'a`? (2认同)

Don*_*ows 16

删除元素的另一种方法是将其过滤掉.这种Tcl 8.5技术与其他地方提到的lsearch&lreplace方法的不同之处在于它从列表中删除了所有给定元素.

set stripped [lsearch -inline -all -not -exact $inputList $elemToRemove]
Run Code Online (Sandbox Code Playgroud)

它没有做的是搜索嵌套列表.这是Tcl没有过多努力深入理解您的数据结构的结果.(您可以通过-index选项比较子列表的特定元素来告诉它进行搜索.)