Возможно, вы сможете работать над значениями, пока они собраны вместе. Трудно сказать, по крайней мере, снимок структуры, с которой вы работаете. Вот простой пример.
Проц не возвращает матрицу, которая работает с точками в матрице.
proc my_cartesian {a b} {
set len_a [llength $a]
set len_b [llength $b]
set len [expr $len_a * $len_b]
set y 0
for {set i 0} {$i < $len} {incr i} {
set x [expr $i % $len_a]
if {$x == 0 && $i != 0} {
incr y
}
set px [lindex $a $x]
set py [lindex $b $y]
# Your code
puts "$px, $py"
}
}
my_cartesian {a b c} {1 2 3}
выход:
a, 1
b, 1
c, 1
a, 2
b, 2
c, 2
a, 3
b, 3
c, 3
Слово на улице в том, что вы не можете уйти от сложности продукта (смотри, например, http://stackoverflow.com/a/1741391/488796). Есть способы ускорить процесс, но нужна дополнительная информация. Насколько велика "большая"? Является ли ваш код в строках сценария, или это в 'proc', который вы вызываете (это имеет значение для байт-кодирования)? –