我有一个以数组结束的过程。要返回它,我使用“array get”来检索列表。但是,此列表不仅包含我的数组条目,还包含它们的索引:
所以我的数组[ a b c d ]
变成了一个列表{ 0 a 1 b 2 c 3 d }
如何在不干扰列表顺序的情况下摆脱这些索引号?
一些选项,除了使用foreach
:
# [array get] actually returns a dictionary
puts [dict values $list]
# Could do this too
set entrylist {}
dict for {- entry} $list {
lappend entrylist $entry
}
puts $entrylist
Tcl 8.6 中有更多的可能性:
puts [lmap {- entry} $list {set entry}]
(还有一个dict map
,但在这里没有用。)
我喜欢dict values
……</p>
我认为最简单和最基本的方法是使用foreach
循环:
% set list {0 a 1 b 2 c 3 d}
% set entrylist {}
% foreach {id entry} $list {
% lappend entrylist $entry
% }
% puts $entrylist
a b c d
如果您已经有一个数组并使用 Tcl 8.5 或更高版本,请使用 dict values
:
set arr(0) a
set arr(1) b
set arr(2) c
set arr(3) d
puts [dict values [array get arr]]
但最好使用简单的list
:
set mylist {a b c d}
lset list 1 boo
puts [lindex $mylist 1]
lappend mylist eff
数组是关联的。总是。