我知道我可以创建一个“列表列表”,如下所示,但是我想在过程的一部分中创建“ d”(动态附加$ x(x = a,b,c))。 有人可以帮我理解吗?我不相信lappend可以使用它,因为它只会将列表元素添加到现有列表中。这是一个二维列表。创建二维列表后,我很清楚如何访问嵌套列表。有什么想法吗?
set a [list x y z]
set b [list u v w]
set c [list i j k]
set d [list $a $b $c] #I want to create this as a part of a procedure
foreach m $d {
puts "++++++++++++"
foreach n $m {
puts $n
}
}
sleepy> ./listOflist.tcl
+++++++
x
y
z
+++++++
u
v
w
+++++++
i
j
k
sleepy>
答案 0 :(得分:0)
在最简单的情况下,您只需执行以下操作:
proc 2D {m n} {
set result {}
set letter 96
for {set i 0} {$i < $m} {incr i} {
set row {}
for {set j 0} {$j < $n} {incr j} {
lappend row [format "%c" [incr letter]]
}
lappend result $row
}
return $result
}
很好,但是如果要扩展这些内部行之一? lset
!它使您可以在任何深度的任何列表的末尾放置一个元素。
% set basic2Darray [2D 3 3]
{a b c} {d e f} {g h i}
% lset basic2Darray 0 end+1 x; # <<< see the end+1?
{a b c x} {d e f} {g h i}