DeleteCases[Tuples[Range[-2, 2], 2], {___, 0, ___}] (* or *)
DeleteCases[data, {0, 0}|{1,0}|{0,1}]
{{-2, -2}, {-2, -1}, {-2, 1}, {-2, 2}, {-1, -2}, {-1, -1}, {-1,
1}, {-1, 2}, {1, -2}, {1, -1}, {1, 1}, {1, 2}, {2, -2}, {2, -1}, {2,
1}, {2, 2}}
Alternatively, if you can, remove zeros from the input lists before using Tuples
:
Tuples[Join[-Reverse@#, #]&@Range[2],2]
same result
Even if data = Tuples[Range[-2, 2], 2]
is already created, processing data
to create a zero-free input list and using Tuples
on it is (to my surprise) faster than using Pick
to remove entries with zeros from pairs of data:
data = Tuples[Range[-100, 100], 2];
ra = Tuples[Join[-Reverse @ #, #]& @ Range[100],2]; // RepeatedTiming // First
0.0000524
rb = With[{r = DeleteCases[DeleteDuplicates @ Flatten[data], 0]},
Tuples[r, 2]];// RepeatedTiming // First
0.000178
rc = Pick[data, Unitize[data].{1, 1}, 2];//RepeatedTiming//First (*from @Henrik's answer*)
0.0013
rd = DeleteCases[data, {0, 0}|{1,0}|{0,1}];// RepeatedTiming // First
0.017
re = DeleteCases[data, {___, 0, ___}];// RepeatedTiming // First
0.026
rf = Select[data, FreeQ[0] ];// RepeatedTiming // First (*from David's answer *)
0.060
ra == rb == rc == rd == re == rf
True