我有以下字符串:
"TTTHTHTTHTTTTHTTTHTTTTTTHTTTTTHTH"
我希望能够将T分组到列表中,然后将T的数量计算到第一个H.
即是这样的
[3, 1, 2, 4, 3, 6, 5, 1]
什么是在python中最有效的方法?
itertools.groupby 是你的朋友
from itertools import groupby
s = "TTTHTHTTHTTTTHTTTHTTTTTTHTTTTTHTH"
res = [sum(1 for _ in g) for k, g in groupby(s) if k == 'T']
print(res)
# [3, 1, 2, 4, 3, 6, 5, 1]
Run Code Online (Sandbox Code Playgroud)
您可以使用列表解析在一行中执行此操作:
my_string = "TTTHTHTTHTTTTHTTTHTTTTTTHTTTTTHTH"
my_list = [len(i) for i in my_string.split('H') if len(i)>0]
Run Code Online (Sandbox Code Playgroud)
产量my_list:
[3, 1, 2, 4, 3, 6, 5, 1]
Run Code Online (Sandbox Code Playgroud)