>我有 10 行和 10 列的矩阵。我想装箱 tcl 列表,其中列表的每个元素将是 2 个数字。.每行 1 个。 例如,如果我的矩阵是
$a $b $c $d $e
$f $g $h $i $j
$k $l $m $n $o
$p $q $r $s $t
我想要包含元素的列表$a $b
,$f $g
,$k $l
,$p $q
. 有人可以告诉我怎么做吗?
假设您的矩阵是列表列表,您可以使用lmap
命令:
$ 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}
如果您使用的是 Tcllib 中struct::matrix
包定义的矩阵,则可以执行以下操作:
set pairlist [$matrix get rect 0 0 1 end]
注意:矩阵的名称在matrix
变量中,rect
是"矩形"的缩写,0 0
给出要提取的矩形左上角矩阵中的坐标,1 end
给出矩形右下角矩阵中的坐标(矩阵支持end
表示最后一行和/或最后一列, 就像 Tcl 字符串和列表一样(。
package require struct::matrix
struct::matrix data
data add columns 5
data add rows 4
data set rect 0 0 {
{a b c d e}
{f g h i j}
{k l m n o}
{p q r s t}
}
data get rect 0 0 1 end
# {a b} {f g} {k l} {p q}
这应该产生结果