如何对Tcl中列表的所有元素执行算术运算

SIM*_*MEL 1 tcl

我有一个很长的值列表,我想将它们全部除以相同的数字,有没有办法在一个命令中执行此操作而不是由成员执行此操作:

set new_list [list ]
foreach member $list {
    lappend new_list [expr $member / 1E9]
}
Run Code Online (Sandbox Code Playgroud)

pat*_*yts 5

不.并始终支持你的表达.

proc map {lst expr} {
    foreach item $lst { lappend r [expr [string map {%x $item} $expr]] }
    return $r
}

map [list 2.3 4.5 6.7] {%x * %x + 0.5}
map [list ...] {%x / 1e9}
Run Code Online (Sandbox Code Playgroud)

可能是一个解决方案,如果你想 - 但没有内置的东西.