Nathaniel Flath
Nathaniel Flath

Reputation: 16015

Elisp List Contains a Value

How do you check, in elisp, if a list contains a value? so the following would return t:

(contains 3 '(1 2 3))

but

(contains 5 '(1 2 3))

would return nil.

Upvotes: 51

Views: 18215

Answers (3)

Hi-Angel
Hi-Angel

Reputation: 5619

And if you want to find an element by applying a function, there's a seq-find:

(seq-find (lambda (val) (= 3 val))
          '(1 2 3))

Upvotes: 1

Mirzhan Irkegulov
Mirzhan Irkegulov

Reputation: 18055

freiksenet's answer is good and idiomatic. If you are using dash.el, you could also call function -contains?, which does exactly the same—checks if some list contains an element:

(-contains? '(1 2 3) 2) ; t

Upvotes: 8

freiksenet
freiksenet

Reputation: 3679

The function you need is member

For example:

(member 3 '(1 2 3))

It will return the tail of list whose car is element. While this is not strictly t, any non-nil value is equivalent to true for a boolean operation. Also, member uses equal to test for equality, use memq for stricter equality (using eq).

Upvotes: 86

Related Questions