我有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
的列表。
有人能告诉我怎么做吗?
答案 0 :(得分: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}
答案 1 :(得分:0)
如果您使用的是Tcllib中struct::matrix
package定义的矩阵,请执行以下操作:
set pairlist [$matrix get rect 0 0 1 end]
注意:矩阵的名称在matrix
变量中,rect
是“矩形”的缩写,0 0
在左上角的矩阵中给出坐标要提取的矩形,1 end
给出矩形右下角矩阵中的坐标(矩阵支持end
表示最后一行和/或列,就像Tcl字符串和列表一样)。
答案 2 :(得分:0)
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}
这应该会产生结果