Tcl中两个列表的元素乘法

时间:2018-02-20 10:52:45

标签: list tcl multiplication

我有两个长度相同的列表,我希望将它们按元素相乘(就像集合中的笛卡尔积)。我该怎么做?例如,如果我写

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

,然后所需的输出是:     {1 4 9 16 25}

1 个答案:

答案 0 :(得分:2)

两个列表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的多列表形式确实得到了很长时间的支持。