python - 列出 Python 的二进制字符串
问题描述
我有一个像'1100011101'
. 我想将它解析成一个列表,其中每个 1 或 0 块都是列表中的一个单独值。
如:
'1100011101'
变成['11', '000', '111', '0', '1']
解决方案
groupby()
您可以通过使用正则表达式而不是+来获得(次要)性能join()
。这只会找到1
or组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)
推荐阅读
- html - Hide overflow of an image with a greater width than the body
- python - heapq custom compareTo
- oracle - Issues with selection of DATES between START and END dates
- solr - Sitecore 8.2 更新 7 升级 - 使用默认 Solr 提供程序 - WebApi 路由不起作用
- swift - 使用 tableviewcell 创建一个。swift中的目录
- php - 在 JSON 返回正文中向 SendGrid 添加收件人无效
- java - 仅当涉及文件 iploads/downloads 时才阻止跨域请求
- ssl - Opencart SLL httpaccess
- android - API 23 中的 ContextCompat.getColor 崩溃(未找到 Context.getColor)
- javascript - 如何使用 jquery 设置选择选项值并选择搜索库?