Select Pairs in a List
I think you'll find the simple
DeleteCases[list, {_, _, __}, {3}]
to be a bit more efficient...
Using ReplaceAll
(/.
)
list /. {_Integer, _Integer, __} :> Nothing
One needs to carefully specify the replacement rules however, try for example
list /. {_, _, __} :> Nothing
(* Nothing *)
Rule replacement is actually quite efficient (relatively speaking) in this case, compare the above to @ciao's answer:
testList = Join[Apply[Sequence]@Table[list, 200000]]
(res1 = testList /. {_Integer, _Integer, __} :> Nothing); // AbsoluteTiming
(* {2.55462, Null} *)
(res2 = DeleteCases[testList, {_, _, __}, {3}]); // AbsoluteTiming
(* {0.769297, Null} *)
res1 == res2
(* True *)
For a solution based on rule replacement a factor of ~3 worse than the (supposedly) fastest method isn't half bad.
Using Apply
f[x_, y_] := {x, y};
f[___] := Nothing;
Apply[f, list, {3}]