2024-05-08 00:25:01 发布
网友
假设我有一个如下形式的字符串:
"000000111100011100001011000000001111"
我想创建一个包含1-条纹长度的列表:
有一个很好的一行吗?
可以用regex来完成,尽管没有itertools解决方案那么优雅
answer = [len(item) for item in filter(None, re.split(r"[^1]+", test_string))]
或者,更优雅:
更优雅(乔恩的功劳):
answer = map(len, re.findall("1+", test_string))
>>> mystr = "000000111100011100001011000000001111" >>> [len(s) for s in re.split("0+", mystr) if s] [4, 3, 1, 2, 4]
如果你不介意from itertools import groupby。。。在
from itertools import groupby
>>> from itertools import groupby >>> [len(list(g)) for k, g in groupby(s) if k == '1'] [4, 3, 1, 2, 4]
可以用regex来完成,尽管没有itertools解决方案那么优雅
或者,更优雅:
^{pr2}$更优雅(乔恩的功劳):
如果你不介意
from itertools import groupby
。。。在相关问题 更多 >
编程相关推荐