我有一个很长的值列表,我想将它们全部除以相同的数字,有没有办法在一个命令中执行此操作而不是由成员执行此操作:
set new_list [list ]
foreach member $list {
lappend new_list [expr $member / 1E9]
}
我有一个很长的值列表,我想将它们全部除以相同的数字,有没有办法在一个命令中执行此操作而不是由成员执行此操作:
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}
如果您愿意,可能是一个解决方案 - 但没有任何内置功能。
Tcllib 的::struct::list包有一个映射功能:
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