我想遍历三个列表,以便评估列表中变量的每个排列。我目前有一个for
循环和两个嵌套的for
循环,但是我想知道是否可以使用foreach
来达到相同的效果?但是,我不太清楚foreach
的语法。 (可能是因为我不确定如何/何时使用foreach
)。
这是我当前的代码块。可以将其写为foreach
吗?
set list1 {a b c}
set list2 {red blue green}
set list3 {dogs cats chickens}
for {set i 0} {$i < [llength $list1]} {incr i} {
for {set j 0} {$j < [llength $list2]} {incr j} {
for {set k 0} {$k < [llength $list3]} {incr k} {
set alpha [lindex $list1 $i]
set color [lindex $list2 $j]
set animal [lindex $list3 $k]
puts "$alpha $color $animal"
}
}
}
答案 0 :(得分:4)
在遍历列表时,可以使用foreach
而不是for
,并且不需要索引,而需要列表本身。例如,您可以使用以下代码代替当前循环:
foreach alpha $list1 {
foreach color $list2 {
foreach animal $list3 {
puts "$alpha $color $animal"
}
}
}