You can use itertools.compress for this purpose.
>>> from itertools import compress >>> list(compress("abcdefg", [1, 1, 0, 0, 1, 1, 0])) ['a', 'b', 'e', 'f']
If you do not want to import any modules, you can also use
>>> [e for e, i in zip("abcdefg", [1, 1, 0, 0, 1, 1, 0]) if i] ['a', 'b', 'e', 'f']
Based on your last requirement
>>> from itertools import groupby >>> st = "abcdefghijklm" >>> some_list = [1,1,0,0,0,1,1,1,0,0,0,1,0] >>> it_l = iter(some_list) >>> [''.join(v) for k, v in groupby(st, key = lambda e:next(it_l)) if k] ['ab', 'fgh', 'l']
or better
>>> [''.join(zip(*v)[-1]) for k, v in groupby(zip(some_list, st), key = itemgetter(0)) if k] ['ab', 'fgh', 'l']