Question: Suppose I have a list:

```
lst = [0, 1, 0, 0]

```

How can I make python interpret this list as a binary number 0100 so that `2*(0100)` gives me `01000`?

The only way that I can think of is to first make a function that converts the "binary" elements to corresponding integers(to base 10) and then use bin() function..

Is there a better way?

Answer: 
This is not a fancy one-liner, but simple and fast.

```
lst = [0,1,1,0]

num = 0
for b in lst:
    num = 2 * num + b
print(num) # 6

```
slightly different approach with comprehension (i hope it will be helpful for someone)

```
arr =[192, 168, 0, 1]
arr_s = [bin(i)[2:].zfill(8) for i in ar]
num = int(''.join(arr_s), 2)

```

same, but reverse order (and also one-liner suitable for lambdas )

```
arr = [24, 85, 0]
num = int(''.join( [bin(i)[2:].zfill(8) for i in arr[::-1]] ), 2)

```

using bit-wise and reduce:

```
reduce ((lambda x,y: (x<<8)|y), arr[::-1]) 

```