I have a list of integers, e.g. `i=[1,7,3,1,5]` which I first transform to a list of the respective binary representations of length `L`, e.g. `b=["001","111","011","001","101"]` with `L=3`. 

Now I want to compute at how many of the `L` positions in the binary representation there is a `1` as well as a zero `0`. In my example the result would be `return=2` since there is always a `1` in the third (last) position for these entries. I want to compute this inside a function with a numba decorator.
Currently my code is:

    @nb.njit
    def count_mixed_bits_v2(lst):
        andnumber = lst[0] & lst[1]
        ornumber = lst[0] | lst[1]
        for i in range(1, len(lst)-1):
            andnumber = andnumber & lst[i+1]
            ornumber = ornumber | lst[i+1]
        xornumber = andnumber ^ ornumber
        result = 0
        while xornumber > 0:
           result += xornumber & 1
           xornumber = xornumber >> 1
        return result

First I take the AND of all numbers, ans also the OR of all numbers, then the XOR of those two results will have a 1 where the condition is fulfilled. In the end I count the number of 1's in the binary representation. My code seems a bit lengthy and I'm wondering if it could be more efficient as well. Thanks for any comment!

Edit: Without the numba decorator the following function works:

    def count_mixed_bits(lst):
        xor = reduce(and_, lst) ^ reduce(or_, lst)
        return bin(xor).count("1")

(Credit to trincot)