如何从tcl中的列表中删除每个偶数索引元素?我用了
for {set i 0} {$i <[llength $a]} {incr i} {
if {[expr $i % 2] == 0} {
lreplace $a [lindex $a $i] [lindex $a $i]
}
但是每当我删除元素时如何使用lreplace更新变量
答案 0 :(得分:2)
创建新列表并添加所需元素可能要容易得多。在foreach下方将成对出行列表,并将第一个附加到新列表中。这也适用于具有奇数个元素的列表。 j的最后一次值只是空的。
set a "0 1 2 3 4 5 6 7 8 9 10"
set result []
foreach {i j} $a {
lappend result $i
}
puts $result
结果将是
0 2 4 6 8 10
请注意,TCL中大多数与列表相关的命令都采用列表的名称(例如lreplace A 0 0),而不是值( lreplace $ A 0 0 )
答案 1 :(得分:1)
使用您的技术,您需要更改incr
命令:
% set a {a b c e f g h}
a b c e f g h
% for {set i 1} { $i < [llength $a] } {incr i 2} {lappend c [lindex $a $i]}
% puts $c
b e g
%