Emacs Lisp: Filter a List

By Xah Lee. Date: . Last updated: .

How to filter elements in a list?

use seq-filter in package (require 'seq) [see Emacs Lisp: Sequence Functions] ( require Emacs 25 (Released 2016-09) or later)

(require 'seq)

(setq xx '(1 "a" 2))

;; remove items that's not a number
(seq-filter 'numberp xx)
;; (1 2)

;; old remain unchanged
xx
;; '(1 "a" 2)

Before emacs 25, use cl-remove-if

You can use the cl-remove-if or cl-remove-if-not in CL library, like this:

(require 'cl-lib)
(cl-remove-if-not 'numberp  '(1 "a" 2)) ;; (1 2)

Note: emacs 24.x renamed remove-if to cl-remove-if

Thanks to • Artur Malabarba https://github.com/Malabarba, • Matthew Fidler https://github.com/mattfidler

Emacs Lisp: Filter List