这里的任务是将字符串110011110110000分解为一个列表:

['11', '00', '1111', '0', '11', '0000']


我的解决方案是

str1='110011110110000'
seg = []
a0=str1[0]
seg0=''
for a in str1:
    print('a=',a)
    if a==a0:
        seg0=seg0+a
    else:
        print('seg0=',seg0)
        seg.append(seg0)
        seg0=a
        a0=a
seg.append(seg0)
seg


这很丑陋,我相信你们那里对此有一个统一的要求。也许正则表达式?

最佳答案

您可以使用itertools.groupbydoc):

str1='110011110110000'

from itertools import groupby

l = [v * len([*g]) for v, g in groupby(str1)]

print(l)


印刷品:

['11', '00', '1111', '0', '11', '0000']


编辑:使用正则表达式的版本:

str1='110011110110000'
import re
print([g[0] for g in re.findall(r'((\d)\2*)', str1)])

关于python - 将二进制字符串分解为段,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56897302/

10-12 21:48