我有两个相同长度的列表,我想在元素上乘以它们(例如集合中的笛卡尔产品(。我该怎么做?例如,如果我写
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
的多列表确实已经支持很长时间了。