4

lsearch命令具有-start index作为选项之一

-start index从位置index开始搜索列表。如果index的值为end,它指的是列表中的最后一个元素,而 end - integer指的是列表中的最后一个元素减去指定的整数偏移量。

我想-end-start. 如何做呢?可以通过丢弃返回列表中大于或等于-endindex的索引来完成。lsearch但是有没有更好的方法?

4

1 回答 1

4

在您的情况下,我很想用它lrange来生成正在搜索的列表的副本,而没有您不想返回的元素。

lsearch [lrange $theList $start $end] $searchTerm

-start选项的真正目的是允许跳过以前找到的匹配项,现在我们有了该-all选项(它lsearch返回一个可以匹配搜索词的所有位置的列表),它的用处不大。它有点像这样使用:

for {set idx -1} {[set idx [lsearch -start [incr idx] $list $term]] >= 0} {} {
    # Process the match index...
    puts "found $term at $idx"
}

现在你会写:

foreach idx [lsearch -all $list $term] {
    puts "found $term at $idx"
}
于 2012-08-10T08:27:34.147 回答