1

値のリストが非常に長いので、それらをすべて同じ数で除算したいのですが、メンバーごとにこれを行う代わりに、1つのコマンドでこれを行う方法はありますか?

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

2 に答える 2

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}

必要に応じて解決策になるかもしれませんが、そのための組み込み機能はありません。

于 2012-08-09T11:47:01.837 に答える
3

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
于 2012-08-09T14:18:40.370 に答える