2016-09-16 2 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) 

я могу думать только использовать, если заявления, но мой фактический список довольно длинный, и он будет неэффективным, если элемент содержит повторы между ними элементом, например, «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 
Смежные вопросы