5

我在 Tcl 中有一个列表:

set list1 {0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9}

那么如何根据列表的索引获取元素?例如:

我想得到这个列表的第二个元素?还是这个列表的第六个?

4

3 回答 3

9

只使用拆分和循环?

foreach n [split $list1 ","] {
    puts [string trim $n]  ;# Trim to remove the extra space after the comma
}

[split $list1 ","]返回一个包含0x1 { 0x2} { 0x3} { 0x4} { 0x5} { 0x6} { 0x7} { 0x8} { 0x9}

foreach循环遍历列表的每个元素并将当前元素分配给$n.

[string trim $n]然后删除尾随空格(如果有)并打印结果。


编辑:

要获取列表的第n个元素,请使用以下lindex函数:

% puts [lindex $list1 1]
0x2
% puts [lindex $list1 5]
0x6

该索引是基于 0 的,因此您必须从需要从列表中提取的索引中删除 1。

于 2013-10-02T12:18:00.230 回答
3

Just do

lindex $list 2

you will get

0x3
于 2015-01-22T11:11:30.023 回答
1

您“应该”为此使用 lindex 。但是从您的问题中,我的印象是您不希望“,”出现在提取的元素中。您不需要“,”来分隔列表。只需空格即可。

> set list1 {0x1 0x2 0x3 0x4 0x5 0x6 0x7 0x8 0x9}
> 0x1 0x2 0x3 0x4 0x5 0x6 0x7 0x8 0x9
> lindex $list1 3
> 0x4
于 2019-09-06T17:22:08.943 回答