Do you need it to be a list. Since you want to use the indexing behavior of a numpy array, it would make better sense to other people that read your code if you actually use a numpy array.
Maybe try using an array with dtype='a'? For example in the code below,
x = sp.array(['a', 'b', 'c'], dtype='a')
print(x)
print(x=='c')
print(x[x=='c']).
This will return the following arrays,
['a' 'b' 'c']
[False False True]
['c'].
Assignment will work as you would expect too,
x[x=='c'] = 'z'
print(x).
This will return the modified array,
['a' 'b' 'z'].
The only concern is that the elements of the array cannot be longer than the allocated length. Here it is specified as one with dtype='a'. You can use dtype='a5' or dtype='aN' for any length you want. All the elements of the array must be strings that are shorter than the maximum length.
If you pass a string that is too long it will chop off the end, as in the following example with dtype set to 'a2':
x = sp.array(['abc', 'bcd', 'cde'], dtype='a2')
print(x),
which gives,
['ab' 'bc' 'cd'].