2015-10-27 117 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是一個列表)連接成一個平面清單。

文檔:concatforeachlappendlistset

+0

糟糕,沒有看到你已經接受了答案。 –

+0

如果你有一些相關的和新的添加,回答一個提問者接受答案是合理的。我在這方面有很多代表,提問者接受了我認爲需要不同傾向的答案。 ;-) –