Tôi có Danh sách Bản đồ, tôi cần lấy các phần tử được lập chỉ mục chẵn/lẻ từ danh sách đó trong Clojure. Tôi không muốn lặp lại suy nghĩ danh sách với vòng lặp. Có chức năng nhỏ hoặc single_word nào không?lấy các phần tử được lập chỉ mục/lẻ từ Bộ sưu tập (Danh sách Bản đồ) trong Clojure
8
A
Trả lời
24
user=> (take-nth 2 [0 1 2 3 4 5 6 7 8 9])
(0 2 4 6 8)
user=> (take-nth 2 (rest [0 1 2 3 4 5 6 7 8 9]))
(1 3 5 7 9)
-1
Tôi không biết về bất kỳ chức năng built-in cho điều này, nhưng nó không phải là dài dòng để viết một mình, đây là nỗ lực của tôi:
(defn evens-and-odds [coll]
(reduce (fn [result [k v]]
(update-in result [(if (even? k) :even :odd)] conj v))
{:even [] :odd []}
(map-indexed vector coll)))
(evens-and-odds [ "foo" "bar" "baz" "foobar" "quux" ])
; -> {:even ["foo" "baz" "quux"], :odd ["bar" "foobar"]}
Cảm ơn, tôi đã tìm thấy nó, chỉ bỏ lỡ giây để đăng câu trả lời! –
Đây chính xác là những gì tôi cần! – PubNub