有没有办法测试一个元素是否存在于list中?
$ qore -nX 'boolean(select ("a", "b", "c"), $1 === "a")'
这个解决方案创建一个新的列表只是为了测试它的大小...
发布于 2018-02-28 23:00:13
实际上有一个语言函数可以做到这一点!inlist和inlist_hard
发布于 2018-02-23 15:34:02
如果元素不重复,那么您的解决方案还不错,因为只会返回单个元素列表。
对于更有效的一般解决方案,您可以同时使用foldl和map运算符,这两个运算符都支持lazy functional evaluation,因此在复合表达式执行期间不会创建中间列表。
例如:
$ qore -nX '(foldl $1 + $2, (map 1, ("a", "b", "c", "a"), $1 === "z")).toBool()'
False
$ qore -nX '(foldl $1 + $2, (map 1, ("a", "b", "c", "a"), $1 === "a")).toBool()'
True请注意,您可以去掉上面表达式中的.toBool()伪方法调用,以直接获得元素在列表中出现的次数。然而,这种解决方案的一个缺点是,它扫描整个列表,而不是在找到第一个匹配项时立即停止。
https://stackoverflow.com/questions/48924654
复制相似问题