使用Tcl脚本从列表的每个元素中加减数字

时间:2019-04-04 09:45:56

标签: tcl

我有一个输入文件名为“ input.dat”,其值为:

7 0
9 9
0 2
2 1
3 4
4 6
5 7
5 6

我想通过使用Tcl脚本将其转换为列表来从第2列中添加/减去任何数字。我编写了如下的Tcl脚本:

set input [open "input.dat" r]
set data [read $input]
set values [list]
foreach line [split $data \n] {
    if {$line eq ""} {break}
    lappend values [lindex [split $line " "] 1]
}
puts "$values-2"
close $input

但是输出结果是:0 9 2 1 4 6 7 6-2

有人可以帮助我,如何解决此问题?或脚本中的错误是什么?如果有人可以帮助我编写正确的脚本,这也很有帮助。

1 个答案:

答案 0 :(得分:1)

我仍然不确定100%想要什么,但是这些选项似乎都可以通过lmap命令解决,该命令用于对列表的每个元素进行操作。

以下是将每个元素与-2连接的方法:

set values [lmap val $values {
    string cat $val "-2"
}]

以下是从每个元素中减去2的方法:

set values [lmap val $values {
    expr {$val - 2}
}]