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}}}