在列表TCL中移动元素
我用TCL语言编写的脚本有两个问题。 第一: 我创建了从图表下载值的列表,但我不知道如何移动列表中的元素,例如:在列表TCL中移动元素,tcl,Tcl,我用TCL语言编写的脚本有两个问题。 第一: 我创建了从图表下载值的列表,但我不知道如何移动列表中的元素,例如: set list [2,3,4,5,6] # my list 我想要这个效果-> [1,2,3,4,5] next -> [0,1,2,3,4] etc. 第二: 如何为10个元素创建固定大小的列表?我希望列表中有10个元素,当我得到>10个元素时,我希望删除最后一个元素并添加新元素作为第一个元素(第一个问题) 感谢并抱歉我的英语不好:)要在列表的第一个位置添加新项目,同时
set list [2,3,4,5,6] # my list
我想要这个效果->
[1,2,3,4,5] next -> [0,1,2,3,4] etc.
第二:
如何为10个元素创建固定大小的列表?我希望列表中有10个元素,当我得到>10个元素时,我希望删除最后一个元素并添加新元素作为第一个元素(第一个问题)
感谢并抱歉我的英语不好:)要在列表的第一个位置添加新项目,同时将列表限制为给定大小:
set size 5
set list [list 2 3 4 5 6]
# => 2 3 4 5 6
set list [lrange [linsert $list 0 1] 0 $size-1]
# => 1 2 3 4 5
set list [lrange [linsert $list 0 0] 0 $size-1]
# => 0 1 2 3 4
您可以使用以下步骤将其简化一点:
proc move {varName new} {
upvar 1 $varName list
set size 5
set list [lrange [linsert $list 0 $new] 0 $size-1]
}
set list [list 2 3 4 5 6]
# => 2 3 4 5 6
move list 1
# => 1 2 3 4 5
move list 0
# => 0 1 2 3 4
文件:
,
,
,
,
,
Tcl索引表达式的语法:
- 基于零的整数索引数
最后一个元素end
-N最后一个元素之前的第N个元素end
+N最后一个元素后的第N个元素(实际上,N应该是负数)end
- M-N元素M之前的第N个元素
- M+N元素M之后的第N个元素
表达式中不能有空格。要在列表的第一个位置添加新项,同时将列表限制为给定大小,请执行以下操作:
set size 5
set list [list 2 3 4 5 6]
# => 2 3 4 5 6
set list [lrange [linsert $list 0 1] 0 $size-1]
# => 1 2 3 4 5
set list [lrange [linsert $list 0 0] 0 $size-1]
# => 0 1 2 3 4
您可以使用以下步骤将其简化一点:
proc move {varName new} {
upvar 1 $varName list
set size 5
set list [lrange [linsert $list 0 $new] 0 $size-1]
}
set list [list 2 3 4 5 6]
# => 2 3 4 5 6
move list 1
# => 1 2 3 4 5
move list 0
# => 0 1 2 3 4
文件:
,
,
,
,
,
Tcl索引表达式的语法:
- 基于零的整数索引数
最后一个元素end
-N最后一个元素之前的第N个元素end
+N最后一个元素后的第N个元素(实际上,N应该是负数)end
- M-N元素M之前的第N个元素
- M+N元素M之后的第N个元素
表达式中不能有空格。非常感谢!!!它的工作:)你是最好的!在这方面,Tcl的MichalOlder版本不支持索引的M±N语法;如果是那样的话,你必须用
expr
解决。非常感谢!!!它的工作:)你是最好的!在这方面,Tcl的MichalOlder版本不支持索引的M±N语法;在这种情况下,您必须使用expr
进行计算。