
Originally Posted by
marko_ribar
Code:
(defun every2nd ( lst )
(vl-remove nil (mapcar '(lambda ( a ) (if (eq (rem (vl-position a lst) 2) 0) a)) lst))
)
(defun groupby2 ( lst )
(mapcar '(lambda ( a b ) (list a b)) (every2nd lst) (every2nd (cdr lst)))
)
(groupby2 '(51 41 83 10 60 32 46 84))
Be careful with duplicates...
Code:
_$ (every2nd '(1 2 3 1 2 3))
(1 3 1 3)
For your method, consider perhaps:
Code:
(defun f ( l / i )
(setq i -1)
(vl-remove-if '(lambda ( x ) (= 1 (rem (setq i (1+ i)) 2))) l)
)
(defun g2 ( l ) (mapcar 'list (f l) (f (cdr l))))
Code:
_$ (g2 '(1 2 3 1 2 3))
((1 2) (3 1) (2 3))
Bookmarks