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

How to combine two arrays for form two column data using TCL

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

我见过一个 zip 命令,例如 set n $a.zip(b) puts $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}

您可以使用 lmap:

模拟 zip 函数
% 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

如果您使用早于 8.6 的 Tcl 版本,那么您必须模拟 lmap 本身,例如 here.