获取当前元素和包含Clojure中其他所有内容的列表?

too*_*ays 4 list-comprehension clojure

获取包含当前元素对的列表以及包含所有其他元素的列表的最快方法是什么?这应该很快,因为列表可能包含一百万或更多元素.

例如给出列表 (1 2 3)

我想得到清单 ((1 (2 3)) (2 (1 3)) (3 (1 2)))

谢谢你的帮助!

Dav*_*Ray 6

这将无需遍历遍历整个向量:

(defn this-and-that [xs]
  (map-indexed (fn [i x]
                [x (concat (take i xs) 
                           (drop (inc i) xs))])
              xs))
Run Code Online (Sandbox Code Playgroud)

并且也适用于nils:

user=> (this-and-that [1 2 nil 3])
([1 (2 nil 3)] [2 (1 nil 3)] [nil (1 2 3)] [3 (1 2 nil)])
Run Code Online (Sandbox Code Playgroud)