Python将列表中重复字符组合在一起

yyyllmsg  于 2022-10-30  发布在  Python
关注(0)|答案(4)|浏览(167)

我想把一个由1和0组成的字符串拆分成一个由这些字符组成的重复组的列表。
示例:
m = ['0000', '11', '000', '11111', '000']
转至:
m = ['0000', '11', '000', '11111', '000']
我该如何在高效简洁的代码中做到这一点呢?正则表达式是否适用于此?

mu0hgdu0

mu0hgdu01#

是的,您可以使用re。例如:

import re

m = "00001100011111000"

print(["".join(v) for v, _ in re.findall(r"((.)\2*)", m)])

印刷品:

['0000', '11', '000', '11111', '000']

其他正则表达式:

print(re.findall(r"0+|1+", m))

印刷品:

['0000', '11', '000', '11111', '000']
flmtquvp

flmtquvp2#

您可以使用itertools groupby

from itertools import groupby
m = '00001100011111000'
["".join(g) for _, g in groupby(m)]
uplii1fm

uplii1fm3#

使用itertools.groupby的另一种方法:

from itertools import groupby

["".join(g) for k, g in groupby(m)]
ftf50wuq

ftf50wuq4#

您可以使用re.finditer():

m = "00001100011111000"
[s.group(0) for s in re.finditer(r"(\d)\1*", m)]

输出量:

['0000', '11', '000', '11111', '000']

相关问题