Sorry for the not-so-explicit title, my problem is very specific and I have no idea how to make it short.

Here's the thing: I have a list of exactly 8 elements that are -1, 0 or +1. I want to change the 0s in either -1 or +1. The thing is that sometime I can't know how to fill it; I just know that at the end, I must have no 0; exactly 5 times -1 and 3 times +1. The idea would be, that given a list containing some 0s, I end up with all the admissible lists (with good number of -1/+1) I can obtain by changing the values of the 0s.
For instance, imagine the list is:

```
L  = [-1,-1,-1, 0, 0, 1, 1,-1] 

```

As L contains 4 times -1 and 2 times +1, I would like to explore what would happen with:

```
L1 = [-1,-1,-1, 1,-1, 1, 1,-1] 
L2 = [-1,-1,-1,-1, 1, 1, 1,-1] 

```

I had an idea which is to do as follows: count how much 0 there are, count to two power that, convert it in binary, and fill accordingly; putting -1 instead of 0, and discarding the cases that have not the good ration of +1/-1. That seems kind of overkill to me, and I'm pretty sure there is a smarter way to do it.

Your thoughts?