创建矩阵前 2 列的 TCL 列表

  • 本文关键字:列的 TCL 列表 创建 tcl
  • 更新时间 :
  • 英文 :


>我有 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}

这应该产生结果

最新更新