如何将列表的某些部分复制到TCL中的新列表?

use*_*316 2 copy list tcl

我有一个列表如下:

set list1 {1,2,3,4,5,6,7,8,9}
Run Code Online (Sandbox Code Playgroud)

如何每次将它的三个元素复制到另一个列表?

例如复制后:

listc1 is {1,2,3}
listc2 is {4,5,6}
listc3 is {7,8,9}
Run Code Online (Sandbox Code Playgroud)

Hai*_* Vu 5

您的第一个语句略有偏离:Tcl不使用逗号分隔列表元素,它使用空格.下面是一个代码片段,可以执行您想要的操作:

set list1 {1 2 3 4 5 6 7 8 9}
set counter 0
foreach {a b c} $list1 {
    set listc[incr counter] [list $a $b $c]
}
Run Code Online (Sandbox Code Playgroud)

讨论

  • foreach语句一次从列表中获取3个元素.在第一次迭代中,a = 1,b = 2,c = 3.在第二个中,a = 4,b = 5,c = 6,依此类推.
  • 表达listc[incr counter]将产生listc1,listc2...
  • 如果列表的长度不能被3整除,那么最后一个listc*将填充空元素.