List 如何在不使用TCL中的循环的情况下检查列表中的所有元素是否为特定元素
我有一个列表{Desg Desg Desg Desg Desg Desg Desg}List 如何在不使用TCL中的循环的情况下检查列表中的所有元素是否为特定元素,list,search,tcl,List,Search,Tcl,我有一个列表{Desg Desg Desg Desg Desg Desg Desg} 我想看看列表中除了这些元素之外还有没有其他元素。我也不想运行循环。类似lcontain的东西?使用expr{[lsearch…-非$list$pattern]>=0}使用expr{[lsearch…-非$list$pattern]>=0}为什么不想使用循环?这是我最后的选择。只是检查一下是否有像lsearch这样的东西可以达到目的。为什么不使用循环呢?这是我最后的选择。只是检查一下是否有像lsearch这样的东
我想看看列表中除了这些元素之外还有没有其他元素。我也不想运行循环。类似lcontain的东西?使用
expr{[lsearch…-非$list$pattern]>=0}
使用expr{[lsearch…-非$list$pattern]>=0}
为什么不想使用循环?这是我最后的选择。只是检查一下是否有像lsearch这样的东西可以达到目的。为什么不使用循环呢?这是我最后的选择。只是检查一下是否有像lsearch这样的东西可以达到目的……这是唯一明智的方法。(当然,它只是将循环提升到lsearch
的C实现中,但这是正确的地方…@sudeep请注意,如果您是创建列表的人,可能有一种更快的方法来实现这一点,可能是使用数组、布尔变量或if
/开关
(如果您需要其他内容,您仍然可以保留该列表)。正如Donal所说,lsearch
必须检查所有元素(除非您先对其排序,然后使用lsearch-sorted
)@potrzebie,除非同时指定了-all
,lsearch
不会遍历所有元素,因为它会在第一次匹配时停止。但是搜索排序列表肯定会有所帮助,因为这会将算法转换为二进制搜索。这是唯一明智的方法。(当然,它只是将循环提升到lsearch
的C实现中,但这是正确的地方…@sudeep请注意,如果您是创建列表的人,可能有一种更快的方法来实现这一点,可能是使用数组、布尔变量或if
/开关
(如果您需要其他内容,您仍然可以保留该列表)。正如Donal所说,lsearch
必须检查所有元素(除非您先对其排序,然后使用lsearch-sorted
)@potrzebie,除非同时指定了-all
,lsearch
不会遍历所有元素,因为它会在第一次匹配时停止。但是搜索排序列表肯定会有所帮助,因为这会将算法转换为二进制搜索。