Skip to main content
 首页 » 编程设计

python之将字符串中的字符与二进制列表匹配

2025年05月04日31kuangbin

使用字符串 abcdefg 和列表 [1, 1, 0, 0, 1, 1, 0],返回字符串中所有字符的 Pythonic 方法是什么匹配列表中的 1 (on) 吗?

所需的输出将是:

['a', 'b', 'e', 'f'] 

谢谢!

编辑:

还有一个问题,是否可以将 ab 和 ef 分组,以便输出看起来像这样:['ab', 'ef' ]?基本上,这个想法是对由 0 分隔的字符进行分组。如果没有 0 则它将是 ['abcdefg']。谢谢!

请您参考如下方法:

您可以使用 itertools.compress为此目的

>>> from itertools import compress 
>>> list(compress("abcdefg", [1, 1, 0, 0, 1, 1, 0])) 
['a', 'b', 'e', 'f'] 

如果不想引入任何模块,也可以使用

>>> [e for e, i in zip("abcdefg", [1, 1, 0, 0, 1, 1, 0]) if i] 
['a', 'b', 'e', 'f'] 

根据您的最新要求

>>> 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'] 

或更好

>>> [''.join(zip(*v)[-1]) for k, v in groupby(zip(some_list, st), key = itemgetter(0)) if k] 
['ab', 'fgh', 'l']