请注意,Tcl 是一种对空格非常敏感的语言,因此您需要在 $Content 声明中的右大括号和左大括号之间留一个空格。
您可以遍历 $Content,并且对于每个子列表,遍历元素并除以 300,收集结果:
set Content {{1 2 3 4 5} { 2 3 4 5 6} { 4 5 6 7 8 9} {3 4 6 8 9 0}}
# note the spaces ......^............^..............^
set divisor 300
set newContent [list]
foreach sublist $Content {
set newSublist [list]
foreach elem $sublist {
lappend newSublist [expr {$elem * 1.0 / $divisor}]
}
lappend newContent $newSublist
}
puts $newContent
输出是
{0.0033333333333333335 0.006666666666666667 0.01 0.013333333333333334 0.016666666666666666} {0.006666666666666667 0.01 0.013333333333333334 0.016666666666666666 0.02} {0.013333333333333334 0.016666666666666666 0.02 0.023333333333333334 0.02666666666666667 0.03} {0.01 0.013333333333333334 0.02 0.02666666666666667 0.03 0.0}
如果您的 Tcl 版本是 8.6,您可以使用以下lmap
命令来缩短代码:
set newContent [lmap sublist $Content {
lmap elem $sublist {expr {$elem * 1.0 / $divisor}}
}]
请注意,我乘以1.0
使用浮点除法而不是整数除法。