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 に答える