【发布时间】:2016-08-25 08:42:34
【问题描述】:
假设有一个名为xs 的列表。此列表需要通过谓词过滤,并且需要从结果中获取随机元素:
(rand-nth (filter pred? xs))
这将返回列表中的一项。如果另外需要保留原始列表(减去提取的项目)应该怎么做?
这两个步骤是必要的还是有更快的方法?
(let [item (rand-nth (filter pred? xs))
new-xs (remove (partial = item) xs)]
...)
【问题讨论】:
-
你真的有性能问题吗?否则你就犯了premature optimization。
-
感谢您的提醒。也许你是对的。如下所述,此方法将删除重复项。但是,我的数据不包含那些(所以它可能是一个集合) - 我会坚持我的路线。
-
您是否只从每个列表中提取一个元素?您保留剩余部分表明其他情况。
标签: clojure functional-programming clojurescript