2

私は2つのリストを持っています:

set lista {5 6}
set listb {8 9}

次のコードは、2つのリストをループするために使用されます。

foreach listaelement listbelement $lista $listb {
    puts $listaelement &listbelement 
}

foreachを使用して出力を実現する方法は
次のとおりです。listaの最初の要素、listbの
最初の要素、lista
の最初の要素、listbの2番目の要素、listaの2番目の要素、listbの最初の要素、
listaの2番目の要素、listbの2番目の要素、

5 8
5 9
6 8
6 9
4

2 に答える 2

6

ループをネストして-nonewlineを使用するだけで、希望する出力が得られます。

foreach listelementa $lista {
   foreach listelementb $listb {
      puts -nonewline "$listelementa  $listelementb  "
   }
}
puts ""

puts注意: Tclが最初の引数をチャネルIDとして解釈しないようにするには、ステートメントで引用符を使用する必要があります。

foreachTclでは、ステートメント内の複数のリストを参照できます

foreach listelementa $lista listelementb $listb {
    puts -nonewline "$listelementa  $listelementb  "
}
puts ""

ただし、これは5 8 6 9出力として提供されます-必要なものではありません。

編集:出力が1行としてフォーマットされているという質問に答えたとき、私はかなり確信しています。実際に各ペアに1行が必要な場合は、-nonewlineオンputsと末尾のスペースは必要なく、ファイナルputsも実行できます。

于 2012-07-03T12:26:22.647 に答える
0
set lista {5 6}

set listb {8 9}


set indexb [expr ([llength $listb ] -1)]

foreach listano $lista {


for {set i 0 } {$i <= $indexb } {incr i} {

 set element [lindex $listb $i]

 puts "element is $listano $element"
 }
}

要素は58要素は59要素は68要素は69

于 2015-11-21T04:35:23.103 に答える