use*_*011 0 function vector clojure
我需要从获得一个随机值vector的integers.
我还需要在vector没有值键的情况下取回.
示例代码如下.我知道我可以轻松地将此代码放入function重用中.
但是想知道是否有一些功能或更好的方法来创建一个vector没有第n个元素的新东西?(因此是function核心clojure 中第(n)个的补充)
(let [ vector [1 2 3 5 9 1]
id (rand-int (count vector))
value (nth vector id)
head (take id vector)
tail (drop (+ id 1) vector)
vector (flatten [head tail])]
{:value value :new-vector vector})
Run Code Online (Sandbox Code Playgroud)
矢量数据结构不能有效地移除单个元素.如果您经常这样做,通常应该使用更合适的数据结构.例如,如果向量的元素是不同的,则可以使用集合(或排序集,如果在其他情况下顺序对您很重要).或者,如果它们不是明显的,但你从不关心秩序,你可以做一个Fisher-Yates shuffle - 这里我们使用一个向量,但避免"从中间删除是昂贵的"问题,通过交换中间的一个元素在最后,然后从最终删除.
| 归档时间: |
|
| 查看次数: |
86 次 |
| 最近记录: |