我想动态地将元素添加到嵌套列表中。考虑以下示例:
set super_list {}
lappend super_list {00 01 02}
lappend super_list {10 11 12}
lappend super_list {20 21}
结果是:
super_list = {00 01 02} {10 11 12} {20 21}
[lindex $super_list 0] = {00 01 02}
[lindex $super_list 1] = {10 11 12}
[lindex $super_list 2] = {20 21}
如何在[lindex $ super_list 2]后面附加另一个值(例如22)?
lappend [lindex $super_list 2] 22
不起作用!
到目前为止,我唯一想到的解决方法是:
lset super_list 2 [concat [lindex $super_list 2] {22}]
这真的是唯一的方法吗?
谢谢,
莱纳斯
最佳答案
在Tcl 8.6中(添加了功能;在早期版本中不起作用),您可以使用lset
通过索引end+1
扩展嵌套列表:
set super_list {{00 01 02} {10 11 12} {20 21}}
lset super_list 2 end+1 22
puts [lindex $super_list 2]
# ==> 20 21 22
您也可以通过使用数字索引来解决末尾的问题,但是我认为
end+1
更易记。关于list - 将元素追加到TCL中的嵌套列表,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17945880/