Selecting elements of a list based on range
Tersely:
Cases[{(1|2|3)..}] /@ l
Another possibility:
l /. a:{__Integer} /; Min[a]<1 || Max[a]>3 -> Nothing
{{{3, 2}, {3, 1, 1}, {2, 2, 1}, {2, 1, 1, 1}, {1, 1, 1, 1, 1}}, {{3, 3}, {3, 2, 1}, {3, 1, 1, 1}, {2, 2, 2}, {2, 2, 1, 1}, {2, 1, 1, 1, 1}, {1, 1, 1, 1, 1, 1}}}
If you're interested in an idiomatic approach that uses curried operators:
Select[AllTrue[Between[{1, 3}]]] /@ l
edit
When there are only a few different integers you want to retain, the following is also an option:
Select[ContainsOnly[Range[1, 3]]] /@ l