1

我有一个以数组结束的过程。要返回它,我使用“array get”来检索列表。但是,此列表不仅包含我的数组条目,还包含它们的索引:

所以我的数组[ a b c d ] 变成了一个列表{ 0 a 1 b 2 c 3 d }

如何在不干扰列表顺序的情况下摆脱这些索引号?

4

3 回答 3

5

一些选项,除了使用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>

于 2013-07-11T13:26:43.547 回答
1

我认为最简单和最基本的方法是使用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
于 2013-07-11T13:00:23.597 回答
0

如果您已经有一个数组并使用 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

数组是关联的。总是。

于 2013-07-11T13:27:07.783 回答