首页 > 解决方案 > 列出 Python 的二进制字符串

问题描述

我有一个像'1100011101'. 我想将它解析成一个列表,其中每个 1 或 0 块都是列表中的一个单独值。

如: '1100011101'变成['11', '000', '111', '0', '1']

标签: pythonlistbinary

解决方案


groupby()您可以通过使用正则表达式而不是+来获得(次要)性能join()。这只会找到1or组0

import re

s = '1100011101'
l = re.findall(r"0+|1+", s)
# ['11', '000', '111', '0', '1']

时间:

s = '1100011101' * 1000

%timeit l = [''.join(g) for _, g in groupby(s)]
# 1.16 ms ± 9.79 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)

%timeit re.findall(r"0+|1+", s)
# 723 µs ± 5.32 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)

推荐阅读