TCL-在浮点值列表中选择第n个术语

TCL-在浮点值列表中选择第n个术语,tcl,Tcl,是否有人知道在由浮动值组成的列表中选择特定值的方法(即用于列表中整数的Lindex的等效方法)Tcl的Lindex命令可用于任何任意列表,但是索引本身必须是整数或端点相对值(例如,end-1)。列表中的值可以是浮点数(或任何其他值,包括字符串、列表、变量名、代码片段、数据库句柄等) 索引必须是整数,因为从逻辑上讲,它们是从列表的开头开始计算位置的(当然,从列表的末尾开始计算相对结束位置)。使用浮点数来计算位置是毫无意义的 如果您试图在浮点数的排序列表中查找浮点数的归属,则lsearch命令是正

是否有人知道在由浮动值组成的列表中选择特定值的方法(即用于列表中整数的Lindex的等效方法)

Tcl的
Lindex
命令可用于任何任意列表,但是索引本身必须是整数或端点相对值(例如,
end-1
)。列表中的值可以是浮点数(或任何其他值,包括字符串、列表、变量名、代码片段、数据库句柄等)

索引必须是整数,因为从逻辑上讲,它们是从列表的开头开始计算位置的(当然,从列表的末尾开始计算相对结束位置)。使用浮点数来计算位置是毫无意义的


如果您试图在浮点数的排序列表中查找浮点数的归属,则
lsearch
命令是正确的工具(具有以下选项)

上述方案包括:

  • -sorted
    -告诉
    lsearch
    命令列表已排序(因此它可以使用二进制搜索算法而不是线性搜索算法)
  • -real
    -告诉
    lsearch
    命令它正在使用浮点比较
  • -bisect
    -告诉
    lsearch
    命令查找值的槽位(如果值不在槽位,则不返回
    -1

不清楚你在问什么
lindex
提取特定列表索引处的值。列表中有什么类型的值并不重要。请提供您遇到问题的浮动的示例列表。如果您想在列表中搜索某些内容,您应该查看。
set theList [list 1.23 2.34 3.45 [expr {4.56 + 5.67}]]
puts [lindex $theList 3]
set idx [lsearch -sorted -real -bisect $theList 6.78]

# Now $idx is the index where the value is *or* the index before where it would be inserted
# In particular, $idx+1 indicates the first element later than the value