Tôi có một danh sách mà tôi muốn chia theo cách tương tự như phương pháp của Clojure (partition sz step col)
hoặc chức năng IterableLike.sliding(size: Int, step: Int)
của Scala. Cụ thể, được đưa ra một danh sách như:Bạn có thể sao chép các hàm trượt (phân vùng) của Clojure hoặc các hàm trượt() của Scala bằng ổi?
(1, 2, 3)
Tôi muốn để có thể lặp qua các tiểu danh sách như:
(1, 2), (2, 3)
Trong Clojure này sẽ được thực hiện với:
(partition 2 1 (1, 2, 3))
và với Scala, nó sẽ là:
val it = Vector(1, 2, 3).sliding(2)
Tuy nhiên tôi không có một sự sang trọng như vậy và tôi hy vọng sẽ không phải cuộn của riêng tôi. Ổi có phương pháp phân vùng đến gần nhưng không cung cấp chồng chéo. Googling cũng không có kết quả. Liệu một phương pháp như vậy tồn tại hay tôi sẽ phải cuộn của riêng tôi?
nếu không ai biết về bất cứ điều gì tốt hơn bạn có thể hợp nhất hai phân vùng ổi, trong đó thứ hai là từ một chuỗi với một phần tử bị giảm ... –
Bạn sẽ không cần phân vùng * kích thước? Ý tưởng tốt mặc dù. –
Bạn có thể sử dụng bản đồ, một cái gì đó như: '(bản đồ (fn [xy] '(x, y)) lst (còn lại lst))' – Ankur