Я хотел бы получить Список
(в идеале набор - отбрасывая повторение - но, предполагая, что нет прямого способа сделать это, я просто использую Union
) листьев из данного выражения.
Например, выражение
ArcTan[(-1 + 2*x)/Sqrt[3]]/Sqrt[3]
имеет LeafCount
из 18:
, поэтому я хотел бы что-то вроде
{-1, 2, 3, x, ArcTan, Plus, Power, Rational, Times}
На самом деле, я просто хочу, чтобы функции
{ArcTan, Plus, Power, Rational, Times}
были идеальными, но, по-видимому, есть какой-нибудь не слишком сложный способ отфильтровать их, когда они у меня есть.
Мне повезло с
H[s_] := If[LeafCount[s] == 1, s, Head[s]]
H /@ Level[expr, 1, Heads -> True]
H /@ Level[expr, 2, Heads -> True]
(* ... *)
] но я чувствую, что должен быть способ получше.