首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在tcl NS-2中用单数除法列表

在tcl NS-2中用单数除法列表
EN

Stack Overflow用户
提问于 2017-01-31 08:04:39
回答 1查看 551关注 0票数 1

我想用一个number.Lets除以整个列表,比方说我使用一个变量$Content,我想用300个节点除以下面的列表。所以我接受命令$Content/300

  1. $Content= {1 2 3 4 5}{ 2 3 4 5 6} {4 5 6 7 8}{3 4 6 8 9}

输出结果为{1 2 3 4 5}{ 2 3 4 5 6} {4 5 6 7 9}{3 4 6 8 0}/300,括号缺失,参数无效。

请告诉我如何将所有列表除以单个数字(300个节点),因为在花括号中,每个数字都是一些参数的输出。

EN

回答 1

Stack Overflow用户

发布于 2017-01-31 17:34:23

请注意,Tcl是一种对空格非常敏感的语言,因此您需要在$Content声明中的关闭大括号和打开大括号之间留出空间。

您可以在$Content上迭代,对于每个子列表,遍历元素并除以300,收集结果:

代码语言:javascript
复制
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

输出是

代码语言:javascript
复制
{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命令缩短代码:

代码语言:javascript
复制
set newContent [lmap sublist $Content {
    lmap elem $sublist {expr {$elem * 1.0 / $divisor}}
}]

注意,为了使用浮点数除法而不是整数除法,我用1.0乘法。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41952506

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档