这里的任务是将字符串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.groupby
(doc):
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/