2015-10-27 2 views
0

У меня есть два списка, которые я хотел бы манипулировать .. (я новичок tcl ..). Я хотел бы связать эти два списка и создать третий список с некоторыми добавленными данными.tcl цикл через несколько списков

Данные у меня есть:

set aes {ae0 ae3 ae6 ae1v1 ae1v8} 

set c {c1 c2 c3 k1 k2} 

foreach A $aes { 
foreach C $c { 
puts ${A}_$C 
} 
} 

данные я получаю, как и следовало ожидать это: ae0_c1 ae0_c2 ae0_c3 ae0_k1 ae0_k2 .. ..

Я хочу сделать это добавить некоторые данные перед этим.
AE-To-c = All ae0_c1 ae0_c2 ae0_c3 ae0_k1 ae0_k2 .. End.

ответ

0
% set aes {ae0 ae3 ae6 ae1v1 ae1v8} 
ae0 ae3 ae6 ae1v1 ae1v8 
% set c {c1 c2 c3 k1 k2} 
c1 c2 c3 k1 k2 
% foreach A $aes { 
    foreach C $c { 
     # saving into 'result' variable 
     lappend result ${A}_${C} 
    } 
} 
% set data "some more here" 
some more here 
% set result 
ae0_c1 ae0_c2 ae0_c3 ae0_k1 ae0_k2 ae3_c1 ae3_c2 ae3_c3 ae3_k1 ae3_k2 ae6_c1 ae6_c2 ae6_c3 ae6_k1 ae6_k2 ae1v1_c1 ae1v1_c2 ae1v1_c3 ae1v1_k1 ae1v1_k2 ae1v8_c1 ae1v8_c2 ae1v8_c3 ae1v8_k1 ae1v8_k2 
% set result [linsert $result 0 $data] 
some more here ae0_c1 ae0_c2 ae0_c3 ae0_k1 ae0_k2 ae3_c1 ae3_c2 ae3_c3 ae3_k1 ae3_k2 ae6_c1 ae6_c2 ae6_c3 ae6_k1 ae6_k2 ae1v1_c1 ae1v1_c2 ae1v1_c3 ae1v1_k1 ae1v1_k2 ae1v8_c1 ae1v8_c2 ae1v8_c3 ae1v8_k1 ae1v8_k2 
+0

супер .. Спасибо! –

0

Ваш вопрос не на 100% понятен. Это что-то вроде этого вы хотите?

set res [list AE-To-c = All] 
foreach A $aes { 
    foreach C $c { 
     lappend res ${A}_$C 
    } 
} 
lappend res End 

Если вы хотите, чтобы делать то, что я думаю, что вы хотите сделать, вам нужно захватить перестановки двух списков в списке вместо их печати, а затем завернуть этот список в качестве префикса и суффикса.

Метод выше предварительных нагрузок списка результатов с префиксом AE-To-c = All, затем поднимает перестановки с помощью lappend, и, наконец, добавляет суффикс End в качестве последнего элемента в списке.

Другой способ:

set res [list] 
foreach A $aes { 
    foreach C $c { 
     lappend res ${A}_$C 
    } 
} 
concat [list AE-To-c = All] $res End 

В этом варианте список перестановок создается первый, а затем список префиксов, список перестановок, и список суффиксов (да, End является списком) объединяются в один плоский список.

Документация: concat, foreach, lappend, list, set

+0

К сожалению, не видел, чтобы вы уже приняли ответ. –

+0

Если у вас есть что-то релевантное и новое для добавления, ответ на вопрос, когда ответчик принял ответ, является разумным. У меня много репутации от того, что вопросчик принял ответ, который, как мне казалось, нужен другой наклон. ;-) –

Смежные вопросы