有没有办法测试列表中的项目是否重复5位及以上,重复是否相互相邻?
#!/usr/bin/env python
import itertools
from collections import Counter
mylist = ['000002345','1112345','11122222345','1212121212']
#some function code here
#expected output
#['000002345','11122222345'] #1 and 2 repeats five times, next to each other
#method 1
v = list(mylist[0])
for i in v:
if v[0]==v[1] and v[0]==v[1]...
#method 2
v = list(mylist[0])
Counter(v)
我只能想到使用if语句,但是我的实际列表很长,如果项目在项目之间包含重复,例如' 1123333345',这需要我写,这将是低效的永远不会结束ifs'。
考虑到我的第二种方法,我不知道在知道有多少重复之后如何继续进行,即便如此,它将返回具有五次重复但彼此不相邻的项目,例如& #39; 1212121212'
有什么想法吗?
答案 0 :(得分:2)
条件是我只想要重复5的项目 数字及以上
>>> import re
>>> mylist = ['000002345', '1112345', '11122222345', '1212121212']
>>> for item in mylist:
... if re.search(r'(\d)\1{4,}', item):
... print(item)
...
000002345
11122222345
答案 1 :(得分:1)
您可以使用itertools.groupby
>>> from itertools import groupby
>>> [item for item in mylist if any(len(list(y))>=5 for x,y in groupby(item))]
['000002345', '11122222345']