# Dropping list elements from nested list after evaluation

I need to create a new list from a nested list but using the evaluation as criteria to drop the elements. For example let's say that that I have the following list:

list1={{1,1,-(-1)^3,x,2*x},{1,1,(-1)^3,x,2*x},
{1,1,x,2*x,3*x},{1,1,-x,-2*x,-3*x}}


and I need to eliminate the elements of list1 that the absolute value of the third element give $$1$$, i.d. $$-(-1)^3$$ and $$(-1)^3$$, to obtain

 list2={{1,1,x,2*x,3*x},{1,1,-x,-2*x,-3*x}}


In this case, list1 was created with the code

For[i = 1, i < 4, i++,
For[j = 1, j < 4, j++,
list1[i, j, p_] = Sort[Eigenvalues[mat[i, j, p]]];
]  ]


I have been trying to use Select but until now I am not been able to create list2 to plot it with

list2=ParallelTable[Select[Abs[eigval[i, j, p][[3]]],
Abs[#] != 1 &] , {i, 1, 4}, {j,1,4}]


I am still learning to uses cases in Mathematica so I am not sure how to do it. Do you know if there is wise way to do it? Thanks in advance.

If you prefer using DeleteCases,

list2 = DeleteCases[list1, _?(Abs[#[[3]]] == 1 &)]


{{1, 1, x, 2 x, 3 x}, {1, 1, -x, -2 x, -3 x}}

Delete[
list1,
Position[Abs[list1[[All, 3]]], 1]
]


{{1, 1, x, 2 x, 3 x}, {1, 1, -x, -2 x, -3 x}}

if you want to use Select, try this

Select[list1,!NumberQ@#[[3]]||Abs[#[[3]]]!=1&]


{{1, 1, x, 2 x, 3 x}, {1, 1, -x, -2 x, -3 x}}

This is pretty efficient on unpacked arrays (the Listable attribute assumes list1[[All, 3]] is a flat list, as it is in the OP's example):

Block[{signal},
SetAttributes[signal, Listable];
signal[1] = 1; signal[_] = 0;
Pick[list1, signal@Abs[list1[[All, 3]]], 0]
]
(*  {{1, 1, x, 2 x, 3 x}, {1, 1, -x, -2 x, -3 x}}  *)


(For packed arrays, one would probably want to use Unitize[x-1] instead of signal.)

list =
{{1, 1, -(-1)^3, x, 2*x},
{1, 1, (-1)^3, x, 2*x},
{1, 1, x, 2*x, 3*x},
{1, 1, -x, -2*x, -3*x}};


Using SequenceSplit (new in 11.3}

First @ SequenceSplit[list, {{_, _, 1 | -1, __}}]


{{1, 1, x, 2 x, 3 x}, {1, 1, -x, -2 x, -3 x}}

l1 = {{1, 1, -(-1)^3, x, 2*x}, {1, 1, (-1)^3, x, 2*x},
{1, 1, x, 2*x, 3*x}, {1, 1, -x, -2*x, -3*x}};


Using Cases and Except with Condition:

Cases[l1, {_, _, Except[a_ /; Abs[a] == 1], __}, ∞]


{{1, 1, x, 2 x, 3 x}, {1, 1, -x, -2 x, -3 x}}

Or using SequenceCases:

SequenceCases[l1, {s : {_, _, Except[a_ /; Abs[a] == 1], __}} :> s]


{{1, 1, x, 2 x, 3 x}, {1, 1, -x, -2 x, -3 x}}