Amazon s3 用tcl NS-2中的单个数字划分列表

Amazon s3 用tcl NS-2中的单个数字划分列表,amazon-s3,tcl,ns2,knox-amazon-s3-client,Amazon S3,Tcl,Ns2,Knox Amazon S3 Client,我想用一个数字来划分整个列表,假设我取一个变量$Content,我想用300个节点来划分下面的列表。 所以我使用命令$Content/300 $Content={123445}{23456}{456789}{34690} 结果输出为{1 2 3 4 5}{2 3 4 5 6}{4 5 6 7 8 9}{3 4 6 8 9 0}/300,括号缺失,参数无效 请告诉我如何用单个数字(300个节点)划分所有列表,因为在花括号中,每个数字都是一些参数的输出请注意,Tcl是一种对空格非常敏感的语言,因此在

我想用一个数字来划分整个列表,假设我取一个变量$Content,我想用300个节点来划分下面的列表。 所以我使用命令$Content/300

  • $Content={123445}{23456}{456789}{34690}
  • 结果输出为{1 2 3 4 5}{2 3 4 5 6}{4 5 6 7 8 9}{3 4 6 8 9 0}/300,括号缺失,参数无效


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

    请注意,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
    ,以便使用浮点除法而不是整数除法。

    您希望从尝试执行的操作中得到什么输出?我想从这个列表中生成一些输出。实际上,$Content包含一些参数($delay、$range、$priority)这个参数以列表的形式生成一些值,然后我们除以节点总数。因此,根据这一结果,我将决定我是否选择这家最好的货运代理。对不起,你对你试图实现的目标的解释不清楚。正如我所说的,请给出一个你期望的输出的文字例子。非常感谢你的回答@Glenn Jackman先生。实际上,$content包含一些参数($delay$range$priority$i)基于这些参数,$content自动生成4元组{1 2 3 4}{5 6 7 8}列表,我们将此列表与节点数分开,以便做出一些决定,或者选择最好的转发器,或者不选择。设置no_cs[llength expr{[$Content]/$num_nodes}]$Content/$num_nodes。输出给我错误(无效参数,应该是长度列表)。现在您告诉我可能的解决方案或提示,以便查看上面的代码Glenn Jackmen我运行您的代码,但不幸的是“它给我错误,无法使用非数字字符串作为”*“的操作数”当执行“expr{$elem*1.0/$divisor}”(“foreach”正文第2行)时,从“foreach elem$sublist{lappend newpublist[expr{$elem*1.0/$divisor}]”中调用,现在请告诉我我该做什么?你能准确描述一下“将列表除以300”的意思吗"? 我的假设正确吗?你想将列表中的每个数字除以300?当你出现错误时,$content的值到底是多少?是的,Glenn Jackman我想将列表中的每个数字除以300。。得到了一些价值。