如何从 tcl 中的列表中删除每个偶数索引元素?我用了
for {set i 0} {$i <[llength $a]} {incr i} {
if {[expr $i % 2] == 0} {
lreplace $a [lindex $a $i] [lindex $a $i]
}
但是每当我删除一个元素时如何使用 lreplace 更新变量
创建一个新列表并在其中添加所需的元素可能要容易得多。在 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)
使用您的技术,您需要更改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
%