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

如何在Tcl中对列表的所有元素执行算术操作,tcl,Tcl,我有一个很长的值列表,我想将它们全部除以相同的数字,是否有一种方法可以在一个命令中执行此操作,而不是按成员执行此操作: set new_list [list ] foreach member $list { lappend new_list [expr $member / 1E9] } 没有。并且永远保持你的表情 proc map {lst expr} { foreach item $lst { lappend r [expr [string map {%x $item} $e

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

set new_list [list ]
foreach member $list {
    lappend new_list [expr $member / 1E9]
}

没有。并且永远保持你的表情

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}

如果你愿意的话,这可能是一个解决方案——但没有内置的解决方案。

没有。并且永远保持你的表情

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}
如果您愿意,这可能是一个解决方案-但是没有内置的解决方案。

Tclib的包具有映射功能:

package require struct::list
set lst {1 2 3 4 5}
set new [::struct::list mapfor x $lst {expr {$x * $x}}]
# => 1 4 9 16 25
Tcllib的包具有映射功能:

package require struct::list
set lst {1 2 3 4 5}
set new [::struct::list mapfor x $lst {expr {$x * $x}}]
# => 1 4 9 16 25

我们正在考虑为8.6提供更内置的功能。我们正在考虑为8.6提供更内置的功能。