注意,Tcl是一個非常空白敏感的語言輸出,讓你在你的$ 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
以便使用浮點除法而不是整數除法。
您希望從您嘗試執行的操作中獲得什麼輸出? –
我想從這個列表中產生一些輸出。實際上$ Content包含了一些參數($ delay,$ range,$ priority),這個參數以list的形式產生了一些值。然後我們用總的節點數除。所以在這個輸出的基礎上,我會決定要麼我會選擇這個最好的轉發器或不.. –
對不起,你對你想要實現什麼的解釋不清楚。正如我所說的,請給出您希望的輸出的**文字**例子。 –