问题描述
从 '123456789'
我想找到 3 consecutive numbers
的所有(重叠)匹配:
ListIWant = [123,234,345,456,567,678,789]
我试过了:
print(re.compile(r"(\d){3}").findall('123456789'))
我目前得到的输出:
['3','6','9']
而且我还想知道是否有更有效的方法来计算匹配次数而不是使用 len(ListIWant)
我也在学习英语,如果你在这个地方纠正或建议我更好的词/方式来表达自己,我将不胜感激。
解决方法
使用理解来构建您的列表:
s = '123456789'
w = 3 # window size
l = [int(s[i:i+3]) for i in range(len(s) - w + 1)]
>>> l
[123,234,345,456,567,678,789]
,
a= '123456789'
ListIWant = []
for i,ele in enumerate(a):
if i < len(a)-3:
if (int(a[i+1]) == int(ele)+1) and (int(a[i+2]) == int(ele) + 2):
ListIWant.append(int(ele+a[i+1]+a[i+2]))
else:
if (int(a[i+1]) == int(ele)+1) and (int(a[i+2]) == int(ele) + 2):
ListIWant.append(int(ele+a[i+1]+a[i+2]))
break
输出:
[123,789]