The accepted answer connecting the string is not the fastest.
import random
lst = [int(i < 50) for i in random.choices(range(100), k=100)]
def join_chars(digits):
return int(''.join(str(i) for i in digits), 2)
%timeit join_chars(lst)
13.1 µs ± 450 ns per loop (mean ± std. dev. of 7 runs, 100000 loops each)
def sum_digits(digits):
return sum(c << i for i, c in enumerate(digits))
%timeit sum_digits(lst)
5.99 µs ± 65.5 ns per loop (mean ± std. dev. of 7 runs, 100000 loops each)
, sum_digits() 2!