2016-09-16 4 views
0

Gibt es eine Möglichkeit zu testen, ob ein Element in einer Liste Wiederholungen von 5 Ziffern und mehr hat und die Wiederholungen nebeneinander liegen?Python-Iteration in der Liste

#!/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) 

kann ich denke nur, wenn Aussagen zu verwenden, aber meine aktuelle Liste ist ziemlich lang und es wird ineffizient sein, wenn das Element Wiederholungen enthält zwischen einem Elemente, wie zum Beispiel ‚1123333345‘, die mich nie schreiben erfordert endend ifs '. Bei meiner zweiten Methode weiß ich nicht genau, wie ich vorgehen soll, wenn ich weiß, wie viele Wiederholungen es gibt, und trotzdem werden Artikel mit fünf Wiederholungen zurückgegeben, die nicht nebeneinander liegen, wie z. B. 1212121212 ".

Irgendwelche Ideen?

Antwort

2

Die Bedingung ist, dass ich nur die Einzelteile mit einer Wiederholung von 5 Ziffern wollen und über

Verwenden Sie ein 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 
Verwandte Themen