我有一个 {a b} 形式的列表,我无法在大括号内插入任何内容
我尝试过这些:
set csv [list]
lappend csv [list \
a \
b]
set csv [linsert $csv 1 x]
puts "$csv" # OUTPUT {a b} x
################
set csv [list]
lappend csv [list \
a \
b]
set csv [linsert $csv [llength $csv] x y]
puts "$csv" # OUTPUT {a b} x y
################
set csv2 [list]
lappend csv2 [list \
a \
b]
lappend csv2 [list x y]
puts "$csv2" # OUTPUT {a b} {x y}
################
set csv2 [list]
lappend csv2 [list \
a \
b]
lappend csv2 y
puts "$csv2" #OUTPUT {a b} y
“lappend csv [list”部分自 2016 年以来就存在,我不想更改。我只需要在花括号内添加一些内容,这样所需的输出就是 {a b x y}
命令
lappend csv [list a b]
将单个元素添加到列表中。由于您从一个空列表开始,因此您将拥有一个由单个元素组成的列表,而该元素又是一个列表。
现在您想要将更多元素插入到该子列表中,而不是插入到整个列表中。
linsert
和 lappend
命令仅适用于直接列表。他们无法自行进入子列表。因此,您必须提取子列表,修改它,然后将其放回去:
lset csv 0 [linsert [lindex $csv 0] 1 x y]
作为一种特殊情况,如果您只需要将单个元素附加到子列表的末尾,则可以利用
lset
的一些功能: lset
命令可以进入子列表,并且如果满足以下条件,它将添加一个元素:索引超出列表的长度。所以你可以这样做:
lset csv 0 end+1 x
最终得到 {a b x}