Tcl 中两个列表的逐元素乘法
Element-wise multiplication of two lists in Tcl
我有两个相同长度的列表,我想按元素将它们相乘(就像集合中的笛卡尔积)。我该怎么做?例如,如果我写
set a {1 2 3 4 5}
set b {1 2 3 4 5}
,那么期望的输出是:
{1 4 9 16 25}
A two-list 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
的 multi-list 形式确实已经支持很长时间了。
我有两个相同长度的列表,我想按元素将它们相乘(就像集合中的笛卡尔积)。我该怎么做?例如,如果我写
set a {1 2 3 4 5}
set b {1 2 3 4 5}
,那么期望的输出是: {1 4 9 16 25}
A two-list 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
的 multi-list 形式确实已经支持很长时间了。