1

I failed to make a short pattern to match {1,b,a,4,g}.

my code is as shown below:

MatchQ[{1, a, 3, b, c, 5, 6}, 
 t_List /; MemberQ[t, _Integer | _Symbol]]

I guess there could be more clever way to make this pattern, such as using | and & .

Oliver Redman
  • 311
  • 2
  • 7

2 Answers2

1
MatchQ[{1, a, 3, b, c, 5, 6}, {(_Integer | _Symbol) ..}]
Kuba
  • 136,707
  • 13
  • 279
  • 740
0
data = {1, a, 3, b, c, 5, 6};

targets = {1, b, a, 4, g};

Intersection[data, targets]

(*  {1, a, b}  *)

Cases[data, Alternatives @@ targets]

(*  {1, a, b}  *)

Cases[targets, Alternatives @@ data]

(*  {1, b, a}  *)

Select[data, MemberQ[targets, #] &]

(*  {1, a, b}  *)

Select[targets, MemberQ[data, #] &]

(*  {1, b, a}  *)

Cases[data, _?(MemberQ[targets, #] &)]

(*  {1, a, b}  *)

Cases[targets, _?(MemberQ[data, #] &)]

(*  {1, b, a}  *)

DeleteCases[data, _?(FreeQ[targets, #] &)]

(*  {1, a, b}  *)

DeleteCases[targets, _?(FreeQ[data, #] &)]

(*  {1, b, a}  *)
Bob Hanlon
  • 157,611
  • 7
  • 77
  • 198