2016-09-16 204 views
0

有沒有一種方法來測試列表中的項目是否具有5位及以上的重複,並且重複彼此相鄰?列表中的Python迭代

#!/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'。

考慮到我的第二種方法,在知道有多少次重複之後我不太確定如何進行,即使如此,它將返回具有五次重複但彼此不相鄰的項目,例如'1212121212 」。

任何想法?

回答

2

的條件是我只想用5 位的重複和上述

使用一個regular expression的項目:

>>> import re 
>>> mylist = ['000002345', '1112345', '11122222345', '1212121212'] 
>>> for item in mylist: 
...  if re.search(r'(\d)\1{4,}', item): 
...   print(item) 
... 
000002345 
11122222345