我想用一个number.Lets除以整个列表,比方说我使用一个变量$Content,我想用300个节点除以下面的列表。所以我接受命令$Content/300
输出结果为{1 2 3 4 5}{ 2 3 4 5 6} {4 5 6 7 9}{3 4 6 8 0}/300,括号缺失,参数无效。
请告诉我如何将所有列表除以单个数字(300个节点),因为在花括号中,每个数字都是一些参数的输出。
发布于 2017-01-31 17:34:23
请注意,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乘法。
https://stackoverflow.com/questions/41952506
复制相似问题