construir una lista de asociación a partir de dos vectores


7

Tengo dos vectores [apple orange]y [5 10]. ¿Cómo construyo una lista de asociación a ((apple 5) (orange 10))partir de ellos?

Respuestas:


11

Puedes usar cl-pairlis:

(require 'cl-lib)

(cl-pairlis '(apple orange) '(5 10))
;; =>
;; ((apple . 5) (orange . 10))

También funciona para vectores:

(cl-pairlis [apple orange] [5 10])
;; =>
;; ((apple . 5) (orange . 10))

(La clbiblioteca define el alias más corto pairlispara cl-pairlis, pero esto está en desuso en las versiones más nuevas de Emacs).


Hola abo-abo, ¡Funciona como magia! Me gustaría guardar la lista de asociación en un archivo, ¿conoces alguna buena función para esto? (insertar no funciona) ...
yi.tang.uni

(insert (prin1-to-string (pairlis [apple orange] [5 10])))
abo-abo

Interesante, no me di cuenta de que funciona en vectores (lo que parece ser una característica no documentada).
jch

@ abo-abo eso es genial, muchas gracias! ¡Me ahorró mucho tiempo buscando en Google!
yi.tang.uni

11

(cl-mapcar #'cons [apple orange] [5 10]) => ((apple . 5) (orange . 10))

(cl-mapcar #'list [apple orange] [5 10]) => ((apple 5) (orange 10))

Emacs cl-mapcartoma como argumentos una función de arity una o más y el mismo número de secuencias que su arity. Common Lisp mapcares similar, pero las únicas secuencias que acepta son listas.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.