在Python中将二进制字符串拆分为没有分隔符的相同数字列表?
我在 Python 中有一个字符串,我想将它分成一个没有任何分隔符的列表。该字符串类似于字节数组:'0100100010011'
我想在不使用的情况下将 1 和 0 彼此分开,string.split()因为该函数需要一个分隔符。
这应该是我的预期输出: ['0', '1', '00', '1', '000', '1', '00', '11']
回答
itertools.groupby是一种快速的方法。如果没有key参数,它将按可迭代对象(如字符串)中项目的值进行分组。然后你可以加入组:
from itertools import groupby
s = '0100100010011'
[''.join(g) for k, g in groupby(s)]
# ['0', '1', '00', '1', '000', '1', '00', '11']
在处理大量数据时,itertools 的一个小优势是它允许您迭代大量数据,而无需将整个数据集保存到内存中。因此,例如,您可以一次处理这些而不分配整个列表:
for k, g in groupby(s):
group = ''.join(g)
# deal with a single group and forget it