gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 07:22:16 25 4
gpt4 key购买 nike

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

所需的输出将是:

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

谢谢!

编辑:

还有一个问题,是否可以将 abef 分组,以便输出看起来像这样:['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']

关于python - 将字符串中的字符与二进制列表匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15151011/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com