如何获取tcl中两个索引号之间的元素列表

How to get the element lists between two index numbers in tcl

我有一个列表,例如: 设置一个{零均值0一二均值1三四五均值2六七八九十均值3 12 13 14 15}

现在我想自动化我的代码,以便它创建不同的列表,例如:

list1 {mean0 one two}
list2 {mean1 three four five}
list3 {mean2 six seven eight nine ten}
list4 {mean3 12 13 14 15}

tcl有什么办法吗?任何指导将不胜感激!!

您可以使用 lsearch 查找以“mean”开头的所有元素的索引。添加最后一部分的列表长度。从列表中选择第一个索引作为起点,然后遍历其余索引。 lrange 命令可以为您提供部分列表。一次迭代的结束索引将是下一次迭代的起始索引。

组合起来,可以编码为:

foreach p2 [lassign [linsert [lsearch -all $a mean*] end [llength $a]] p1] {
    puts [lrange $a $p1 [expr {$p2 - 1}]]
    set p1 $p2
}