2017-07-09 27 views
0

私は10行10列の行列を持っています。私はリストの各要素が各行から2つの数字1になるtclリストを作成したいと思う。 は、例えば私の行列が、私は要素$a $b$f $g$k $l$p $qが含まれているリストを持つようにしたい行列の最初の2列のtclリストを作成する

$a $b $c $d $e 
$f $g $h $i $j 
$k $l $m $n $o 
$p $q $r $s $t 

ある場合。 誰かがこれを行う方法を教えてもらえますか?

+0

以前にTclリストを作成しましたか?あなたが望むものがリストを含むリストのように聞こえる。これは可能です。しかし、これまでに何を試しましたか? –

答えて

0

リストのリストは、あなたの行列と仮定すると、あなたがthe lmap command使用することができます。

$ tclsh 
% set matrix { 
{a b c d e} 
{f g h i j} 
{k l m n o} 
{p q r s t} 
} 

{a b c d e} 
{f g h i j} 
{k l m n o} 
{p q r s t} 

% lmap sublist $matrix {lrange $sublist 0 1} 
{a b} {f g} {k l} {p q} 
+0

こんにちはグレン、私はtcl8.4を持っています。 lmapはサポートされていません。 –

+0

2番目のコードスニペットをこのページ(https://wiki.tcl.tk/40570)からコピーします。あなたのプログラムに入れて、あなたは 'lmap'を持っています。可能であれば、Tcl 8.4は時代遅れです。 –

+0

感謝のピーター、それは魅力のように働いた。 –

0

Tcllibでstruct::matrix packageで定義されているあなたは、マトリックスを使用している場合は、次の操作を行います。

set pairlist [$matrix get rect 0 0 1 end] 

注:行列の名前はmatrix変数にあり、rectは「矩形」の略語、0 0は抽出する矩形の左上隅の行列に座標を与え、1 endは、矩形の右下隅の行列の座標を返します(行列ははTclの文字列とリストのように最後の行や列を意味します)。

関連する問題