如何从TCL列表中删除一个元素,例如:
索引
我已经用谷歌搜索过了,还没有找到任何内置的函数。
发布于 2011-04-18 19:15:20
set mylist {a b c}
puts $mylist
a b c
按索引删除
set mylist [lreplace $mylist 2 2]
puts $mylist
a b
按值删除
set idx [lsearch $mylist "b"]
set mylist [lreplace $mylist $idx $idx]
puts $mylist
a
发布于 2011-04-19 06:06:13
删除元素的另一种方法是过滤掉它。这种TCL8.5技术与其他地方提到的lsearch
&lreplace
方法的不同之处在于,它从列表中删除了所有给定元素。
set stripped [lsearch -inline -all -not -exact $inputList $elemToRemove]
它不做的是在嵌套列表中搜索。这是因为Tcl没有花太多的精力去理解你的数据结构。(您可以通过-index
选项,通过比较子列表的特定元素来告诉它进行搜索。)
发布于 2011-04-18 19:10:04
假设你想替换元素"b":
% set L {a b c d}
a b c d
将第一个元素1和最后一个元素1替换为nothing:
% lreplace $L 1 1
a c d
https://stackoverflow.com/questions/5701947
复制相似问题