Here is one way:
Pattern[#, Blank[]] & /@ {a, b, c, d, e, f, g, h, i, j}
(* {a_, b_, c_, d_, e_, f_, g_, h_, i_, j_} *)
An inspection of the FullForm of a_ reveals why this works:
a_ // FullForm
(* Pattern[a, Blank[]] *)
We can abbreviate slightly if we realize that the InputForm of Blank[] is _:
Pattern[#, _] & /@ {a, b, c, d, e, f, g, h, i, j}
(* {a_, b_, c_, d_, e_, f_, g_, h_, i_, j_} *)
As an alternative approach, one might think to use pattern-matching replacement instead:
Replace[{a, b, c, d, e, f, g, h, i, j}, s_Symbol :> s_, {1}]
(*
RuleDelayed::rhs: Pattern s_ appears on the right-hand side of rule s_Symbol:>s_.
{a_, b_, c_, d_, e_, f_, g_, h_, i_, j_}
*)
... but Mathematica issues a warning because most of the time having a pattern on the right-hand side of a rule is a mistake. In this particular case it is not an error, so we have to use Quiet to tell Mathematica that:
Quiet[Replace[{a, b, c, d, e, f, g, h, i, j}, s_Symbol :> s_, {1}], RuleDelayed::rhs]
(* {a_, b_, c_, d_, e_, f_, g_, h_, i_, j_} *)
{a, b, c, d, e, f, g, h, i, j} _ /. Times -> Pattern, which "accidentally" works sinceTimesisOrderlessandBlank[]happens to come after the variables. – Michael E2 Dec 17 '19 at 22:10