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
%