#### [ Take array of indices, find matching indices in another array and replace values ]

I have two arrays, one array that contains all indices of two arrays that meet a certain condition I had made previous to this. The other array is an array of booleans. I want to take the array of indices and find the same place in the array of booleans and replace those values.

So for example what I am looking to do is:

```
myIdxs = [0, 3, 5]
myBools = [1, 0, 0, 1, 1, 1, 0, 1, 0, 1]
```

and change myBools to:

```
myBools = [0, 0, 0, 0, 1, 0, 0, 1, 0, 1]
```

I've tried:

```
myBools = [myBools[i] for i in myIdx == 0]
```

But this does not give me the desired output.

# Answer 1

I hope this works (not sure what you need):

```
myIdxs = [0, 3, 5]
myBools = [1, 1, 1, 1, 1, 0]
myBools = [myBools[i] if i in myIdxs else 0
for i in xrange(len(myBools))]
>>> print myBools
[1, 0, 0, 1, 0, 0]
```

# Answer 2

Poorly worded question, but here are two answers, both are extremely simple and straightforward, and don't required complex list comprehension.

**If you want to change the bit to the opposite value**

```
myIdxs = [0, 3, 5]
myBools = [1, 0, 0, 1, 1, 1, 0, 1, 0, 1]
for i in myIdxs:
myBools[i] ^= 1 # Bitwise operator flips the bit
print(myBools)
```

**If you want to change the bit to zero.**

```
myIdxs = [0, 3, 5]
myBools = [1, 0, 0, 1, 1, 1, 0, 1, 0, 1]
for i in myIdxs:
myBools[i] = 0 # Sets bit to zero
print(myBools)
```

**Output**

The output is actually the same for both, given the input, but don't let that fool you they do two very different things.

```
[0, 0, 0, 0, 1, 0, 0, 1, 0, 1]
[0, 0, 0, 0, 1, 0, 0, 1, 0, 1]
```

# Answer 3

Try using list comprehension with if-else statement.

```
[myBools[i] if i in myIdxs else 0 for i in range(len(myBools))]
```

**Output**

```
[1, 0, 0, 1, 0, 0]
```