1

如何从 tcl 中的列表中删除每个偶数索引元素?我用了

    for {set i 0} {$i <[llength $a]} {incr i} {
    if {[expr $i % 2] == 0} {
     lreplace $a [lindex $a $i] [lindex $a $i] 
    }

但是每当我删除一个元素时如何使用 lreplace 更新变量

4

2 回答 2

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

于 2012-12-03T20:54:36.050 回答
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
% 
于 2012-12-03T20:51:00.097 回答