Arrays 如何使用TCL组合两个数组以形成两列数据

Arrays 如何使用TCL组合两个数组以形成两列数据,arrays,tcl,Arrays,Tcl,我还有一个问题,如何将两个数组组合成两列 我见过一个zip命令,例如。 set n$a.zip(b) 放入$output$n 但是,当我保存文件时,它都在一行中。好心的建议。我不认为有任何内置功能,但它非常简单,可以实现: proc zip {var1 var2} { upvar 1 $var1 A $var2 B set zipped [list] foreach elem1 $A elem2 $B {lappend zipped [list $elem1 $elem2

我还有一个问题,如何将两个数组组合成两列

我见过一个zip命令,例如。
set n$a.zip(b)
放入$output$n


但是,当我保存文件时,它都在一行中。好心的建议。

我不认为有任何内置功能,但它非常简单,可以实现:

proc zip {var1 var2} {
    upvar 1 $var1 A $var2 B
    set zipped [list]
    foreach elem1 $A elem2 $B {lappend zipped [list $elem1 $elem2]}
    return $zipped
}

set a {A B C}
set b {1 2 3}
set n [zip a b]   ;# ==> {A 1} {B 2} {C 3}

您可以通过以下方式模拟zip函数:


如果您使用的是早于8.6的Tcl版本,则必须模拟
lmap
本身,如图所示。

点语法不是简单的Tcl。你一定在使用一些扩展。
% set a {1 2 3}
% set b {4 5 6}
% lmap x $a y $b {list $x $y}
{1 4} {2 5} {3 6}
% puts [join [lmap x $a y $b {list $x $y}] \n]
1 4
2 5
3 6