Python には、「スライス」と呼ばれるリストの一部を取得する便利な方法があります。
a = [1,2,3,4,5,6,7,8,9,10] # ≡ a = range(1,10)
a[:3] # get first 3 elements
a[3:] # get all elements except the first 3
a[:-3] # get all elements except the last 3
a[-3:] # get last 3 elements
a[3:7] # get 4 elements starting from 3rd (≡ from 3rd to 7th exclusive)
a[3:-3] # get all elements except the first 3 and the last 3
Clojure で遊んclojure.repl/doc
でみると、それらすべてに相当するものが見つかりましたが、それらが慣用的なものかどうかはわかりません。
(def a (take 10 (iterate inc 1)))
(take 3 a)
(drop 3 a)
(take (- (count a) 3) a)
(drop (- (count a) 3) a)
(drop 3 (take 7 a))
(drop 3 (take (- (count a) 3) a))
私の質問は、Clojure でシーケンスをスライスする方法ですか? 言い換えれば、シーケンスのさまざまな部分を返す正しい方法は何ですか?