How to divide list according to the pattern?
GatherBy[list, #[[{1, 3}]] &]
{{{0, 0, 0}, {0, 1, 0}},
{{0, 0, 1}, {0, 1, 1}},
{{1, 0, 0}, {1, 1, 0}},
{{1, 0, 1}, {1, 1, 1}}}
Alternatively,
Gather[list, #[[{1, 3}]] == #2[[{1, 3}]] &]
same result
or
Values @ GroupBy[list, #[[{1, 3}]] &]
same result
You can also select the ones with identical first and third entries, then use complement to get the rest:
list = {{0,0,0}, {0,0,1}, {0,1,0}, {0,1,1}, {1,0,0}, {1,0,1}, {1,1,0}, {1,1,1}};
{sel = Select[list, #[[1]] == #[[3]] &], Complement[list, sel]}
{{{0, 0, 0}, {0, 1, 0}, {1, 0, 1}, {1, 1, 1}},
{{0, 0, 1}, {0, 1, 1}, {1, 0, 0}, {1, 1, 0}}}