我有两个清单:
set lista {5 6}
set listb {8 9}
以下代码用于循环两个列表:
foreach listaelement listbelement $lista $listb {
puts $listaelement &listbelement
}
我们怎样才能使用foreach来实现输出:
lista的第一个元素,listb的第一个元素,
lista的第一个元素,listb的第二个元素,
lista的第二个元素,listb的第一个元素,
lista的第二个元素,listb的第二个元素,
5 8 5 9 6 8 6 9
答案 0 :(得分:6)
只是嵌套循环并使用-nonewline应该给出你想要的输出:
foreach listelementa $lista {
foreach listelementb $listb {
puts -nonewline "$listelementa $listelementb "
}
}
puts ""
注意:你需要在puts
语句中使用引号来阻止Tcl将第一个参数解释为通道ID。
Tcl允许您在foreach
语句中引用多个列表
foreach listelementa $lista listelementb $listb {
puts -nonewline "$listelementa $listelementb "
}
puts ""
然而,这会将5 8 6 9
作为输出 - 而不是您需要的。
编辑:我很确定当我回答输出格式为1行的问题时,如果你真的想要每行1行,那么你不需要{{1在-nonewline
和尾随空格以及最终puts
也可以。{/ p>
答案 1 :(得分: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"
}
}
元素是5 8 元素是5 9 元素是6 8 元素是6 9