如何在tcl中"压缩"列表

dad*_*ada 0 list tcl

我有三个清单:

set l1 {1 2 3}
set l2 {'one' 'two' 'three'}
set l3 {'uno' 'dos' 'tres'}
Run Code Online (Sandbox Code Playgroud)

我想建立这个清单:

{{1 'one' 'uno'} {2 'two' 'dos'} {3 'three' 'tres'}}
Run Code Online (Sandbox Code Playgroud)

python,我会使用类似内置函数的东西zip.我该怎么办tcl?我查看了'concat'文档,但没有找到先验相关的命令.

Pet*_*rin 5

lmap a $l1 b $l2 c $l3 {list $a $b $c}
Run Code Online (Sandbox Code Playgroud)

列表映射lmap是一种映射命令,它从一个或多个列表中获取元素并执行脚本。它创建一个新列表,其中每个元素都是脚本一次执行的结果。

文档:列表lmap

该命令是在 Tcl 8.6 中添加的,但可以轻松添加到早期版本中。

获取lmapTcl 8.5 及更早版本


Don*_*ows 5

如果你还没有使用Tcl 8.6(你可以使用的地方lmap),你需要这个:

set zipped {}
foreach a $l1 b $l2 c $l3 {
    lappend zipped [list $a $b $c]
}
Run Code Online (Sandbox Code Playgroud)

这实际上lmap对你有用,但它是8.6中的新功能.