TCL中两个列表的元素乘法



我有两个相同长度的列表,我想在元素上乘以它们(例如集合中的笛卡尔产品(。我该怎么做?例如,如果我写

set a {1 2 3 4 5} 
set b {1 2 3 4 5} 

,那么所需的输出为: {1 4 9 16 25}

两个列表lmap非常适合:

set a {1 2 3 4 5}
set b {1 2 3 4 5}
set result [lmap x $a y $b {expr {$x * $y}}]

如果您使用的是TCL 8.5(或以上(使用此方法:

set a {1 2 3 4 5}
set b {1 2 3 4 5}
set result {}
foreach x $a y $b {
    lappend result [expr {$x * $y}]
}

foreach的多列表确实已经支持很长时间了。

最新更新