xây dựng một danh sách liên kết từ hai vectơ


7

Tôi có hai vectơ, [apple orange][5 10]. Làm thế nào để tôi xây dựng một danh sách liên kết ((apple 5) (orange 10))từ họ?

Câu trả lời:


11

Bạn có thể sử dụng cl-pairlis:

(require 'cl-lib)

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

Cũng hoạt động cho các vectơ:

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

( clThư viện định nghĩa bí danh ngắn hơn pairlischo cl-pairlis, nhưng điều này không được chấp nhận trong các phiên bản Emacs mới hơn.)


Xin chào abo-abo, Nó hoạt động như ma thuật! Tôi muốn lưu danh sách liên kết vào một tệp, bạn có biết chức năng nào tốt cho việc này không? (chèn không hoạt động) ...
yi.tang.uni

(chèn (prin1-to-string (cặplis [táo cam] [5 10])))
abo-abo

Thật thú vị, tôi đã không nhận ra nó hoạt động trên các vectơ (dường như là một tính năng không có giấy tờ).
JCH

@ abo-abo thật tuyệt, cảm ơn bạn rất nhiều! tiết kiệm cho tôi rất nhiều thời gian googling!
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-mapcarlấy làm đối số một chức năng của arity một hoặc nhiều và cùng số lượng trình tự như arity của nó. Lisp thông thường mapcarlà tương tự, nhưng trình tự duy nhất mà nó chấp nhận là danh sách.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.