【问题标题】:How to replace TCL sublists如何替换 TCL 子列表
【发布时间】:2014-09-21 10:13:27
【问题描述】:

在Tcl中有一个list的列表。

set somelist {{aaa 1} {bbb 2} {ccc 1}}

如何替换第一个列表的元素,使新列表看起来像我所做的:

set somelist {{xxx 1} {bbb 2} {ccc 1}}

我尝试使用lreplace 执行此操作,但它不起作用。

lreplace somelist 0 1 {xxx 1}

谢谢。

【问题讨论】:

    标签: list replace tcl


    【解决方案1】:

    lreplace 命令将 列表值 作为第一个参数,而不是变量名,因此您可以这样做

    set somelist {{aaa 1} {bbb 2} {ccc 1}}
    set somelist [lreplace $somelist 0 0 {xxx 1}]
    

    或者,使用lset,这是专门针对这种情况的:

    set somelist {{aaa 1} {bbb 2} {ccc 1}}
    lset somelist 0 {xxx 1}
    

    使用lset,您可以轻松钻取子列表。例如,要将 {bbb 2} 更改为 {bbb 42},您可以这样做

    lset somelist {1 end} 42
    

    【讨论】:

    • +1 但我认为对于特定情况,lset somelist {0 0} xxx 将是 OP 正在寻找的那个。
    猜你喜欢
    • 2016-11-08
    • 1970-01-01
    • 2011-12-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多