我想用一个数字来划分整个列表。让我说我采用变量$ Content,我想将以下列表与300个节点分开。 所以我接受命令$ Content / 300
结果输出{1 2 3 4 5} {2 3 4 5 6} {4 5 6 7 8 9} {3 4 6 8 9 0} / 300,括号缺失且参数无效。< / p>
请告诉我如何将所有列表与单个数字(300个节点)分开,因为在大括号中,每个数字都是一些参数的输出
答案 0 :(得分:0)
请注意,Tcl是一种非常对空白敏感的语言,因此您需要在$ Content声明中的close和open大括号之间留一个空格。
您可以迭代$ 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
以使用浮点除法而不是整数除法。