В Python вы можете сделать что-то вроде
i = (0, 3, 2)
x = [x+1 for x in range(0,5)]
operator.itemgetter(*i)(x)
чтобы получить (1, 4, 3)
.
В (emacs) lisp я написал эту функцию, которая называется extract, которая делает нечто подобное,
(defun extract (elems seq)
(mapcar (lambda (x) (nth x seq)) elems))
(extract '(0 3 2) (number-sequence 1 5))
но я чувствую, что должно быть что-то встроено? Все, что я знаю, это first, last, rest, nth, car, cdr
... Какой путь? ~ Заранее спасибо ~